2009-07-03 9 views
48

क्या यह आईफोन एप्लिकेशन के बिना ऐप्पल पुश अधिसूचना सेवाओं का परीक्षण संभव है? (विंडोज़ पर एक एमुलेटर बनाना?)मैं आईफोन के बिना ऐप्पल पुश अधिसूचना सेवा का परीक्षण कैसे कर सकता हूं?

यदि नहीं है, तो मैं इसका परीक्षण कैसे कर सकता हूं? क्या ऐसा करने के लिए संकलित एक निशुल्क नमूना अनुप्रयोग है?

मैंने सर्वर प्रदाता बनाया, लेकिन मुझे कार्यक्षमता का परीक्षण करने की आवश्यकता है।

+0

उपयोग करने के लिए यह सबसे अच्छा जवाब अद्यतन करने के लिए समय आ गया है की है। मेरे उत्तर से लाइब्रेरी बहुत उपयोगी है, इसके लिए 'अकोमैन' धन्यवाद! – kaspartus

उत्तर

64

कहने के लिए खेद है, लेकिन आपको इस कार्यक्षमता का परीक्षण करने के लिए कुछ हार्डवेयर ढूंढने की आवश्यकता होगी।

पुश नोटिफिकेशन सिम्युलेटर में उपलब्ध नहीं हैं। उन्हें आईट्यून्स कनेक्ट से प्रावधान प्रोफ़ाइल की आवश्यकता होती है, और इस प्रकार डिवाइस पर स्थापित होना आवश्यक है। इसका मतलब यह भी है कि आपको शायद सेब आईफोन डेवलपर प्रोग्राम में स्वीकार करना होगा और अपने $ 99 का भुगतान करना होगा।

आईफोन ओएस 3.0 अपडेट के साथ उज्ज्वल तरफ, आप इस कार्यक्षमता का परीक्षण किसी भी डिवाइस पर कर सकते हैं, जिसमें पहले जेन आईफोन भी शामिल हैं।

+2

मैं एक ही समस्या में भाग गया, आप जवाब के दूसरे भाग के बारे में बात करना स्पष्ट नहीं है: 'यदि नहीं है, तो मैं इसका परीक्षण कैसे कर सकता हूं? क्या ऐसा करने के लिए संकलित एक निशुल्क नमूना अनुप्रयोग है? मैंने सर्वर प्रदाता बनाया है, लेकिन मुझे कार्यक्षमता का परीक्षण करने की आवश्यकता है। – JackLeo

+16

यह स्पष्ट है। परीक्षण करने के लिए आपको एक डिवाइस की आवश्यकता है। –

5

सिम्युलेटर पुश अधिसूचनाएं नहीं करता है।

और सर्वर से धक्का देने के लिए, आपके पास उस डिवाइस पर आपके ऐप को धक्का देने के लिए डिवाइस (डिवाइस) होना चाहिए।

टोकन में ऐप पहचान के साथ-साथ डिवाइस आईडी भी शामिल है।

43

आप असली पुश अधिसूचनाओं का परीक्षण नहीं कर सकते हैं। हालांकि, आप अपने ऐपडिलेगेट - application:application didReceiveRemoteNotification:notification विधि को प्रोग्रामेटिक रूप से और मैन्युअल रूप से ट्रिगर करके एक अनुरूपित पुश अधिसूचना के लिए अपने ऐप के प्रतिक्रिया का परीक्षण कर सकते हैं।

एक अलग वर्ग (एक UIViewController) की तरह से इस को गति प्रदान करने के लिए:

[[[UIApplication sharedApplication] delegate] 
        application:[UIApplication sharedApplication] 
    didReceiveRemoteNotification:testNotification]; 

testNotification कोई वास्तविक अधिसूचना, अर्थात् एक NSDictionary कि संपत्ति सूची की वस्तुओं के साथ साथ NSNull शामिल रूप में एक ही प्रारूप होना चाहिए।

यहाँ testNotification ऊपर कैसे प्रदान करने के लिए की एक उदाहरण है:

NSMutableDictionary *notification = [[NSMutableDictionary alloc] init]; 
[notification setValue:@"Test" forKey:@"alert"]; 
[notification setValue:@"default" forKey:@"sound"]; 

NSMutableDictionary *testNotification = [[NSMutableDictionary alloc] init]; 
[testNotification setValue:notification forKey:@"aps"]; 

इस के साथ काम करने के लिए एक उचित अधिसूचना NSDictionary बनाना चाहिए।

+0

क्या यह कहीं पाया गया कोई नमूना कार्यान्वयन है? –

+0

मेरे पास एक नहीं है (मेरा परीक्षण कार्यान्वयन एक अलग मार्ग लेता है, हालांकि यह वास्तव में ऊपर सुझाए गए अनुसार करना चाहिए)। क्लासिक "जैसा कि मैं कहता हूं, जैसा कि मैं करता हूं" परिदृश्य मुझे लगता है। –

+0

एक नमूना जोड़ा गया। –

26

आजकल, हम this library के साथ पुश नोटिफिकेशन का परीक्षण कर सकते हैं।

यह टर्मिनल के माध्यम से धक्का भेजने के लिए बहुत आसान है:

echo -n '{"message":"message"}' | nc -4u -w1 localhost 9930 

echo -n '{"aps":{"alert" : "message","badge" : 99,"sound" : "default"}, "myField" : 54758}' | nc -4u -w1 localhost 9930 
3

आप

NSString *notificationString = @"{\"aps\":{\"alert\":\"Test alert\",\"sound\":\"default\"}}"; 

NSData *notificationData = [notificationString dataUsingEncoding:NSUTF8StringEncoding]; 

NSDictionary *testNotification = [NSJSONSerialization JSONObjectWithData:notificationData options:0 error:&error]; 

[[[UIApplication sharedApplication] delegate] application:[UIApplication sharedApplication] didReceiveRemoteNotification:testNotification fetchCompletionHandler:nil]; 
संबंधित मुद्दे