2015-10-13 30 views
9

注册远程通知时,我无法收到设备令牌。我收到了警报消息"Do you want to allow App X to be able to send you notificaitons",但是当我接受它时,didRegisterForRemoteNotifications函数未被调用。我试了下面的代码。如何在Swift中注册远程通知时获取设备令牌

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

有时沙盒APNS下跌就像是昨天发生的,当时的代表们不要求设备令牌。

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

中获取设备令牌不要让人们接受你的答案。如果答案对OP有帮助,他们会接受。但是如果你阅读OP的自我回答,你会发现你的回答并不能解决他的问题。 – JAL

+2

另外,问题被标记为“快速”,而不是“objective-c”。你应该发布Swift代码。请始终关注问题的标签。 – Moritz

相关问题