当我正在处理它时,我没有收到推送通知到我的应用程序,
并且 APN服务器返回“BadDeviceToken
”。
我必须在这里找到一些简单的东西,这就是情况:
当我将推送通知发送到从App Store下载的应用程序时,它可以正常工作
当我从同一服务器发送推送通知到我的应用程序的相同版本(*)但是已经构建了Xcode时,APN服务器会返回status: '400'
失败的failed[0].response.reason: 'BadDeviceToken'
(*)我说版本相同,代码相同,插件应该相同,但我已经将Cordova iOS版本从4.x更改为3.x。
我正在使用更新的Push Notifications方法,在服务器上我只在服务器上有一个.p8 APNs Auth Key。
服务器是使用node-apn plugin的节点代码
客户端应用是Cordova,使用Telerik Push Plugin。
我尝试过创建一个新的APNs Auth Key并将其上传到服务器;仍然可以在应用程序的App Store版本上运行,并且APN在发送到我本地构建的应用程序版本时仍会返回“BadDeviceToken”。
在将推送发送到我本地构建的应用之前,我尝试在node-apn的服务器配置上设置production: false
;我仍然收到“BadDeviceToken”错误。
根据this question对令牌执行额外的十六进制编码;结果是它仍然说“BadDeviceToken”,但在那种情况下它确实是真的。
将cordova-ios版本重新提升至4.3.1;仍然得到“BadDeviceToken”。
在构建
为什么APN服务器显示BadDeviceToken
时显然不是这样?
而且,我该如何解决?
答案 0 :(得分:6)
删除应用程序并重新安装(即从Xcode重新运行它)会产生一个新令牌,新令牌无需投诉。
答案 1 :(得分:2)
除了@kris的回答:
xCode
运行应用程序来解决它,这将生成开发构建,并且需要将APNS
开发网关与开发证书一起使用,而不是生产证书。Xcode
直接安装到手机,则必须使用Development security profile
,并确保从服务器端向iOS devlopment sand box
发送通知。如果您使用的是TestFlight/AppStore
,则需要使用生产资料,并确保将通知发送至iOS production sandbox
。Xcode
项目没有使用正确的配置文件,而解决方案则是re-install
应用程序。此外,我想解释APNS_BAD_DEVICE_TOKEN
是什么: