我的应用程序现在可以在应用程序商店中使用,所以我已经将其下载到我的设备上。推送通知在开发过程中运行良好。我使用JavaPNS发送通知,并将其切换为指向苹果的生产服务器。
但是,我现在收到来自APNS服务器的无效令牌错误。
我将Archive方案设置为" Release ",并将Release设置为使用此分发配置文件:
在配置文件中,您可以看到我正确地设置了环境:
然而,我仍然得到了错误。当我查看我的数据库时,我认为应用程序返回给我的设备令牌与开发的令牌是相同的,所以这可能是问题所在。但我不知道为什么它会返回它,考虑到应用程序是正确签名的。这是一个我也用来测试的设备,会有问题吗?关于这里发生的事情还有其他想法吗?
谢谢!
编辑:我没有在我的代码中存储令牌,Eran的回答表明,唯一的其他可能性是我的数据库中有一个旧的令牌,或者应用程序没有被生产配置文件签名。我清理了我的数据库,所以我知道它不是前者,至于后者,我不明白为什么会这样,因为我只有一个分发配置文件,正如我上面所展示的,它正确地设置了“aps environment”密钥。XCode甚至不允许我使用开发配置文件来提交应用商店,对吗?其他几种可能性:
有没有可能,我发送的通知中的密钥有问题,可能会导致“无效令牌”?如果是,我可以为我现有的配置文件重新生成此密钥吗?
AppID中是否包含另一个用于推送通知的配置文件?会不会是这个问题导致了无效令牌错误?
发布于 2014-03-24 20:56:18
我重新下载了推送生产证书,并将其从密钥链导出为.p12。这似乎解决了问题。这似乎很奇怪,一个坏的私钥给了我“无效令牌”的错误。
发布于 2014-03-22 05:06:59
用于生产的设备令牌与用于开发的设备令牌不同,因此,如果您将开发令牌发送到生产APNS服务器(或相反),这就是问题的原因。
当您切换到生产环境时,可能没有从服务器中删除开发设备令牌。
或者,如果您从生产应用程序获取开发令牌,则应用程序将返回本地存储的设备令牌(您可能已在开发期间存储在设备上),而不是要求Apple获取新令牌,或者(如果您确实向Apple请求了当前令牌,但仍获得开发令牌)您的应用程序未使用生产配置文件签名。
发布于 2016-04-11 19:07:48
找到此问题的根本原因,是因为私钥错误。要解决此问题,只需使用.pem生成.p12证书即可。要使用.pem文件创建p12文件,请按照以下方法操作
https://stackoverflow.com/questions/22568648
复制相似问题