2015-10-13 19 views
9

में रिमोट नोटिफिकेशन के लिए पंजीकरण करते समय डिवाइस टोकन कैसे प्राप्त करें दूरस्थ सूचनाओं के लिए पंजीकरण करते समय मुझे डिवाइस टोकन प्राप्त नहीं हो सकता है। मुझे चेतावनी संदेश "Do you want to allow App X to be able to send you notificaitons" मिलता है, लेकिन जब मैं इसे स्वीकार करता हूं, तो didRegisterForRemoteNotifications फ़ंक्शन नहीं कहा जाता है। मैंने निम्नलिखित कोड की कोशिश की।स्विफ्ट

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 

    var types: UIUserNotificationType = UIUserNotificationType.Badge | 
     UIUserNotificationType.Alert | 
     UIUserNotificationType.Sound 

    var settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil) 

    application.registerUserNotificationSettings(settings) 
    application.registerForRemoteNotifications() 

    return true 
} 

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 

    var characterSet: NSCharacterSet = NSCharacterSet(charactersInString: "<>") 

    var deviceTokenString: String = (deviceToken.description as NSString) 
     .stringByTrimmingCharactersInSet(characterSet) 
     .stringByReplacingOccurrencesOfString(" ", withString: "") as String 

    println(deviceTokenString) 

} 

मेरी प्रावधान प्रोफ़ाइल और प्रमाणपत्र क्रम में हैं।

क्या किसी और को यह समस्या है?

+0

आप जब पंजीकरण के लिए कॉलबैक लागू कर दिया है विफल रहता है और देखते हैं कि कहा जाता हो जाता है? – dan

+0

विफल होने पर पंजीकरण करते समय मैंने प्रतिनिधि विधि लागू की लेकिन यह –

+0

पर कॉल नहीं कर रहा है मुझे यह वही समस्या है जिसे आपने कभी समझ लिया है? –

उत्तर

2

तो मैं थोड़ी देर के लिए डिवाइस पर अपना ऐप चला रहा था और मैं यह देखने के लिए वापस आया कि application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) को नीले रंग से बाहर बुलाया गया था और अब यह एक आकर्षण की तरह काम करता है! मेरा सबसे अच्छा अनुमान यह है कि ऐसा क्यों हुआ कि यह हुआ कि पुश अधिसूचनाओं को कॉन्फ़िगर करने के लिए कॉन्फ़िगरेशन और बैकग्राउंड में जो कुछ भी चल रहा है, उसके लिए कुछ समय लगा। तो किसी भी व्यक्ति के लिए जो एक ही समस्या है, मैं सुझाव देता हूं कि इसे कुछ समय दें और फिर वापस आ जाए, मेरे मामले में अगर इसकी कोई मदद हो तो इसमें लगभग 12 घंटे लग गए।

2

कभी-कभी सैंडबॉक्स एपीएन कल जैसा हुआ था, उस समय प्रतिनिधियों को डिवाइस टोकन के लिए बुलाया नहीं जाता है।

0
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
if([[UIDevice currentDevice] systemVersion].floatValue >= 8.0) 
{ 
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; 
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];  
} 
else 
{ 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge)]; 
} 
} 


- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
      //Your device token code 
} 

कोशिश विधियों के नीचे लागू करने और जांच करने के लिए:

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings 
{ 
    //register to receive notifications 
    [application registerForRemoteNotifications]; 
} 

//For interactive notification only 
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler 
{ 
    //handle the actions 
    if ([identifier isEqualToString:@"declineAction"]){ 
    } 
    else if ([identifier isEqualToString:@"answerAction"]){ 
    } 
} 
+2

लोगों को स्वीकार करने के लिए न कहें आपका उत्तर। अगर उत्तर ओपी के लिए उपयोगी है, तो वे स्वीकार करेंगे। लेकिन अगर आप ओपी के आत्म-जवाब को पढ़ते हैं, तो आप देखेंगे कि आपके उत्तर ने उनकी समस्या का समाधान नहीं किया है। – JAL

+2

इसके अलावा, प्रश्न "स्विफ्ट" टैग किया गया है, न कि "उद्देश्य-सी"। आपको स्विफ्ट कोड पोस्ट करना चाहिए। कृपया हमेशा प्रश्न के टैग का पालन करें। – Moritz