2010-07-11 14 views
15

देता है जो मैं एक आईफोन ऐप विकसित कर रहा हूं जिसके लिए पुश अधिसूचना की आवश्यकता है। मैंने प्रमाणीकरण बनाने और ऐप आईडी को संशोधित करने के निर्देशों का पालन किया। मुझे पूरी तरह से यकीन नहीं है कि मैंने यह सही तरीके से किया है, लेकिन मैंने निर्देशों का पालन किया है। कोई विचार है कि मैं यह देखने के लिए कैसे जांच सकता हूं कि यह ठीक है या नहीं?आईफोन रजिस्टरफॉररोटोटोटेशन टाइप टाइप्स त्रुटि उत्पन्न नहीं करता है लेकिन डिवाइस टोकन

जब मैं एमुलेटर में भाग गया तो मुझे एक त्रुटि संदेश मिला जिसमें कहा गया कि एमुलेटर पुश सूचनाओं का समर्थन नहीं करता था। यह कुछ हद तक उम्मीद थी।

बीटीडब्ल्यू: मुझे यह सवाल कुछ बार लगता है। यह हमेशा जेल टूटे हुए फोन के साथ लगता है। मेरा फोन जेल टूटा नहीं है।

लेकिन जब मैं आईफोन पर डीबग करता हूं तो didRegisterForRemoteNotificationsWithDeviceToken विधि को कभी भी निकाल दिया नहीं जाता है। मैं वास्तव में कुछ मदद की सराहना करता हूं। मेरा कोड निम्नानुसार है।

-(void)applicationDidFinishLaunching:(UIApplication *)application 
{  
    rootController.delegate = self; 
    [window addSubview:rootController.view]; 
    [window makeKeyAndVisible]; 

    [[UIApplication sharedApplication] 
    registerForRemoteNotificationTypes: 
    (UIRemoteNotificationTypeAlert | 
    UIRemoteNotificationTypeBadge | 
    UIRemoteNotificationTypeSound)]; 
} 

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
    NSString *str = 
    [NSString stringWithFormat:@"%@",deviceToken]; 
    NSLog(str); 
} 

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err 
{ 
    NSString *str = [NSString stringWithFormat: @"Error: %@", err]; 
    NSLog(str);  
} 
+0

एप्लिकेशन चलाने के लिए आप किस प्रमाणपत्र का उपयोग कर रहे हैं? मुझे लगता है कि इसका असर हो सकता है। – Jonathan

उत्तर

2

चेक बाहर TN2265, जो पुश अधिसूचना समस्याओं डीबगिंग के लिए संकेत है। मुझे आज वास्तव में यह समस्या थी और यह पता चला कि आईपॉड टच पर वाईफाई बंद कर दिया गया था। चूंकि आपने कहा था कि आप एक आईफोन से काम कर रहे थे। शायद यह नहीं है, लेकिन अतिरिक्त संभावनाओं के लिए तकनीकी नोट की जांच करना उचित है।

1

अपनी फ़ायरवॉल सेटिंग्स की जांच करें।

Scott K's Answer से:

If your iOS device is capable of using the cellular data network, check that it has an active cellular data plan. Turn off Wi-Fi in Settings and see if you can still browse the web with Safari, for example. On the other hand, if the push service is using Wi-Fi, any firewalls between your device or computer and the Internet must allow TCP traffic to and from port 5223.

19

आमतौर पर अगर didRegisterForRemoteNotificationsWithDeviceToken कभी नहीं कहा जाता है, ऐसा इसलिए है क्योंकि आप एक प्रावधान प्रोफ़ाइल कि APS-entitled नहीं है का उपयोग कर रहे हैं। यदि आप ऐप एक उत्पादन ऐप है, तो इसे काम पर धक्का देने के लिए वितरण प्रोफ़ाइल के साथ हस्ताक्षर किया जाना चाहिए। यदि यह एक विकास ऐप है, तो आपको इसे विकास प्रोफ़ाइल के साथ साइन करना होगा।

संपादित करें: यह भी ध्यान रखें कि provisioning profile एक स्पष्ट बंडल आईडी का उपयोग करना चाहिए लायक है। वाइल्डकार्ड प्रोफाइल के साथ हस्ताक्षरित किसी भी चीज़ पर भेजे गए धक्का वितरित नहीं किए जाएंगे।

+0

धन्यवाद, मैं नए – htafoya

+0

के साथ प्रावधान प्रोफ़ाइल को प्रतिस्थापित करना भूल गया था, यह स्पष्ट तथ्य को छोड़कर सही अर्थ बनाता है कि 'didFailToRegisterForRemoteNotificationsWithError:' इस मामले में नहीं कहा जाता है? क्या यह वास्तव में ऐसा है? – WiseOldDuck

+0

हां यह वास्तव में ऐसा है, अगर आप उस क्षमता को सक्रिय नहीं करते हैं तो कोई कॉलबैक नहीं है – Sulfkain

9

मुझे एक ही समस्या थी।

मेरे लिए, यह ऐप के लिए अधिसूचना सेटिंग सब कुछ बंद कर दिया गया था।

यदि आईओएस सेटिंग्स ऐप नोटिफिकेशन अक्षम हैं, तो उस विधि को कॉल नहीं किया जाएगा।

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

Settings App->Notification Settings->[My App]

+0

वह कहां है ?? सेटिंग्स आईओएस ऐप में – hasan83

+0

@ हसन। यह इतना समाधान नहीं है, लेकिन समस्या का एक स्पष्टीकरण है। अगर कोई आपके ऐप के लिए नोटिफिकेशन बंद कर देता है, तो आपको कोई त्रुटि या विधि कॉल नहीं मिलती है। – Eric

+0

@ हसन आप कह रहे हैं कि कोई उपयोगकर्ता मेरे ऐप के लिए पुश नोटिफिकेशन बंद कर देता है, तो न तो किया गया रजिस्ट्रारफॉररोटोटोटेशनविथडिवाइस टोकन और न ही किया गयाफेलर रजिस्ट्रारफॉररोटोट नोटिफिकेशनविथरर कॉल किया जाएगा? – PaulG

1

एप्पल के प्रलेखन "समस्या निवारण पुश सूचनाएं" के अनुसार "अगर न प्रतिनिधि कॉलबैक आवेदन: didRegisterForRemoteNotificationsWithDeviceToken: और न ही आवेदन: didFailToRegisterForRemoteNotificationsWithError:। कहा जाता है, इसका मतलब है कि इस संबंध में अभी तक establihed नहीं है किया गया" ... "सिस्टम में इंटरनेट कनेक्टिविटी नहीं है .. प्लेप्लेन मोड।"

मैं इस व्यवहार को भी देख रहा हूं लेकिन इंटरनेट कनेक्टिविटी की कमी के कारण नहीं, बल्कि क्योंकि, इरफान ने बताया कि अधिसूचनाएं सक्षम होने के बाद अधिसूचनाएं अक्षम थीं, विधि को आग लगती है।

समाधान 1) इन प्रतिनिधियों में से किसी भी पर भरोसा न करें। 2) यदि, और कब, आपको एक प्रतिनिधि कॉलबैक प्राप्त होता है, तो उस पर कार्य करें। 3) नेटवर्क कनेक्टिविटी की कमी, एप के लिए अक्षम नोटिफिकेशन को अक्षम किया जा रहा है, एपीएस सक्षम नहीं है, या? प्रतिनिधियों को बुलाए जाने का कारण नहीं होगा।

1

आप iOS8 + एसडीके (जैसे xcode 6 +) का उपयोग कर संकलित कर रहे हैं तो पदावनत iOS7 एपीआई तरीके हैं चुपचाप नजरअंदाज कर दिया और आपको कोई त्रुटि प्राप्त होगी।

आप कुछ इस तरह की जरूरत है आप iOS7 और 8 का समर्थन करना चाहते हैं:

// Have to explicitly use the iOS8 api as the deprecated API is silently ignored on iOS8, surprisingly. 
if ([UIDevice currentDevice].systemVersion.intValue >= 8) { // iOS8+ API. 
    UIUserNotificationType types = UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge; 
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; 
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; 
    [[UIApplication sharedApplication] registerForRemoteNotifications]; 
} else { // iOS7. 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
     UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound]; 
} 

आप aps-environment के साथ मुद्दों को आपकी प्रोफ़ाइल से लापता हो रही है, आप कम से कम didFailToRegisterForRemoteNotificationsWithError

के साथ एक उपयोगी त्रुटि कॉलबैक मिलेगा
+0

मेरे मामले में, मुझे 'रजिस्टर यूज़र नोटिफिकेशन सेटिंग्स' पर कॉल लापता था: (मुझे लगता है कि मुझे डेज़ी चेन चाहिए और सफलता कॉलबैक के भीतर से कॉल करें)। कॉलिंग 'रजिस्टरफॉर रिमोट नोटिफिकेशन' पंजीकरण प्रक्रिया को किकस्टार्ट नहीं करता है। –

संबंधित मुद्दे

 संबंधित मुद्दे