在 iOS 上使用 GCM 获取'unknown token'



我已经在iOS应用程序中安装了GCM,并且一切都在开发中效果很好,我是ABEL以获取推送通知。但是,当我将其发布到App Store时,该设备没有推动通知(在Android中正常工作)。

我在iOS设备上安装了PersistentConnectionLogging.mobileconfig文件以查看日志,这是我看到的:

接收到主题的传入推送通知:com.bundle.id,但 完全未知的令牌xyz

这是确切的输出消息

Jun 24 11:45:35 iPhone apsd[103] <Notice>: 2016-06-24 11:45:35 -0700 apsd[103]: Received incoming push notification for topic: com.bundle.id but for a completely unknown token <95af08c3 c74a13bf 6b6fb270 c486f2b3 58989f44 dfe69bc0f 95u410e1 2431b8dc>
Jun 24 11:45:35 iPhone apsd[103] <Notice>: 2016-06-24 11:45:35 -0700 apsd[103]: <APSCourier: 0x137d035e0>: Responding with REMOVED status for message received with topic: 'com.bundle.id' to device token (instead of per-app token)

知道为什么会发生这种情况吗?为什么代币"未知"?那属于谁?

您是否尝试过测试推送认证?GitHub上的休斯顿经常用于证书测试。基本上,如果推动力与第三方无法使用,那么您需要重新创建证书。

在CLI中使用休斯顿:

apn push "<5e8f5cc0 be283f88 cc4ebb7d b6091499 80f51631 5ebf4928 b59a2a62 198d20d0>" -c -out "apple_push_notification.pem" -m "Hello from the command line!"

*休斯顿说, *我们建议您上传开发证书,生产和任何临时证书。图层将自动确定要使用的证书。

其他潜在原因:

  • 您是否正确调用[layerClient updateRemoteNotificationDeviceToken...]

  • 您是否在didRegisterForRemoteNotificationsWithDeviceToken中打电话以发送设备令牌?

您还可以检查应用程序是否未能通过实现didFailToRegisterForRemoteNotificationsWithError进行注册。如果您查看错误,您应该能够弄清楚为什么您没有看到推动。

示例OBJ-C错误检查

- (void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"PUSH ERROR: %@", error);
}

示例Swift错误检查

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError!) {
print("PUSH ERROR: (error)")
}

潜在的Xcode/证书问题原因:

  • 配置配置文件不是最新的。该设备信息存储在证书中,因此每当您在配置文件中添加新设备时,都需要重新创建配置文件和证书。
  • 确保您的Xcode项目设置指向正确的证书和配置资料。
  • 在钥匙扣访问应用程序中,请确保您要导出密钥和证书。

iOS应用提供了两种类型的证书,一种是用于开发模式,一种用于生产模式。如果您使用的是开发证书,则创建的令牌是开发令牌,并且在生产模式下不起作用。您必须使用生产证书并创建生产令牌。

相关内容

最新更新