APN BadDeviceToken iff运行dev版本
问题
我在工作时没有收到推送通知给我的应用程序,
APN服务器返回“ BadDeviceToken
” 。
情况
我必须在这里错过一些简单的事情,情况是这样的:
-
当我发送推送通知到我的应用程序从App Store下载它的作品
-
当我从同一服务器发送推送通知到我的应用程序的相同版本(*),但build立了Xcode,APN服务器返回一个
status: '400'
失败,failed[0].response.reason: 'BadDeviceToken'
(*)我说相同的版本,代码是相同的,插件应该是相同的,但我已经把cordovaiOS版本从4.x改为3.x。
技术
我正在使用推送通知的新方法,在服务器上的服务器上我只有一个.p8 APNs身份validation密钥。
服务器是使用node-apn插件的节点代码。
客户端应用程序是cordova,使用Telerik Push Plugin 。
我试过了
-
我已经尝试创build一个新的APNsauthentication密钥,并上传到服务器; 仍然适用于应用程序的App Store版本,而APN在发送到我本地生成的应用程序版本时仍然返回“BadDeviceToken”。
-
我已经尝试设置
production: false
在发送推送到我的本地构build的应用程序之前,在服务器configurationnode-apnproduction: false
; 我仍然收到“BadDeviceToken”错误。 -
根据这个问题对令牌做一个额外的hex编码; 结果是它仍然说“BadDeviceToken”,虽然在这种情况下,它实际上是真的。
-
将cordova-ios版本反弹到4.3.1; 仍然得到“BadDeviceToken”。
-
双重检查build立时的“推送通知”function
-
按照这里所build议的执行发布版本而不是debugging版本,并在此处进行描述
问题(S)
为什么APN服务器在显示不正确的时候说BadDeviceToken
?
而且,我该如何解决?
删除应用程序并重新安装(即从Xcode重新运行)给了一个新的令牌,新的令牌没有投诉。
除了@克里斯的回答:
- 你可能已经解决了它,通过运行应用程序通过
xCode
,这将生成一个开发版本,将需要使用开发证书,而不是生产证书的APNS
开发网关。 - 或者,如果您是从
Xcode
直接安装到您的手机,则必须使用Development security profile
,并确保您将通知从服务器端发送到iOS devlopment sand box
。 如果您正在使用TestFlight/AppStore
,则需要使用Productionconfiguration文件,并确保将通知发送到iOS production sandbox
。
然而, 解决scheme是由提出问题的人find的,他说:
- 出于某种原因,
Xcode
项目没有使用正确的configuration文件,解决scheme将是re-install
应用程序。
另外我想解释一下APNS_BAD_DEVICE_TOKEN
是什么:
- 指定的设备令牌不好。 validation您是否指定了有效的令牌,并且您的安全configuration文件的types(开发/生产)与您的推送证书的types相匹配。