设备令牌未生成 iOS

Posted

技术标签:

【中文标题】设备令牌未生成 iOS【英文标题】:Device token not generating iOS 【发布时间】:2016-04-27 12:24:43 【问题描述】:

我在使用真实设备生成设备令牌时遇到问题。 我正在调试设备,但未生成设备令牌。 有时有效,有时无效。

请让我知道可能是什么问题。 谢谢

【问题讨论】:

有时有效,有时无效:在同一台设备上?各种设备?各种ios版本?是否调用了错误回调? 我认为两次询问同一件事不是一个好习惯。在您的两个问题中,您都没有提供任何详细信息、代码、iOS 版本等,您没有表现出任何研究工作。我强烈建议您删除您的一个问题,并在您保留的问题中包含尽可能多的有关该问题的详细信息。干杯! 【参考方案1】:

您是否在didFinishLaunchingWithOptionsAppDelegate.m 下方输入了?

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)

    NSLog(@"ios8 app");
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
    [[UIApplication sharedApplication] registerForRemoteNotifications];

else

    NSLog(@"lower ios8 app");
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

【讨论】:

【参考方案2】:

到目前为止,我也无法获取设备令牌。

我的项目在大约 10 小时前被“擦除”和“安装”时停止生成设备令牌。 同样在韩国 iOS 开发者论坛中,有些人报告了过去 10 小时内没有生成 APNS 令牌的问题。

某些沙盒 APNS 服务器可能有问题。

上次检查时间 2016-04-27 22:43 PM +0900 GMT:没有设备令牌,推送通知未到达。

【讨论】:

这真的发生了吗@CheeseLemon? 是的,现在每个人都在报告,现在它又开始工作了。【参考方案3】:

添加这个方法,

 func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) 
    
      print("application:didFailToRegisterForRemoteNotificationsWithError: %@", error)
    

你会得到答案,为什么没有生成令牌。

【讨论】:

编辑目标 c:-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 【参考方案4】:

@GopalDevra 你能说得更清楚点吗?无论如何,我有这个 Parse 的代码,也许不是你的情况,但你可以理解。

您可以在 AppDelegate.m 中使用 didRegisterForRemoteNotificationsWithDeviceToken,例如:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 

    // Store the deviceToken in the current installation and save it to Parse.
    PFInstallation *currentInstallation = [PFInstallation currentInstallation];
    [currentInstallation setDeviceTokenFromData:deviceToken];
    currentInstallation.channels = @[ @"global" ];
    [currentInstallation saveInBackground];

已编辑

你有没有把它放在 didFinishLaunchingWithOptions 中?

// - Push notifications
// -- Register for Push Notitications
UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert |
                                                UIUserNotificationTypeBadge |
                                                UIUserNotificationTypeSound);
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes
                                                                         categories:nil];

[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];

//-- Set Notification
if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])

    // iOS 8 Notifications
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

    [application registerForRemoteNotifications];

else

    // iOS < 8 Notifications
    [application registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];        


//--- your custom code

【讨论】:

非常感谢我已经尝试了这些代码行。但不工作 @J.Lopes 今天你能自己从沙盒 APN 获取设备令牌吗? @ChrisW.Rea 我今天获得的最后一个设备令牌位于:2016-04-27T03:57:06.942Z 所以我不知道它是否在那之后停止了。我去看看。 Apple 开发者论坛中正在进行讨论,表明其他人目前也无法从沙盒 APN 获取设备令牌。

以上是关于设备令牌未生成 iOS的主要内容,如果未能解决你的问题,请参考以下文章

设备令牌未在 ios 8.1 中生成

设备注册 ID/设备令牌未生成

Pushkit 令牌未进入某些设备 iOS

解析推送通知:iOS 设备令牌未定义

Flutter FCM iOS 问题 - 在检索 FCM 令牌之前未设置 APNS 设备令牌

未在 iOS 10 上为基于 XCode 7.3 构建的应用程序生成设备令牌