我已经通过推送通知发布了我的应用更新,但是当我检查我的服务器时,我注意到发送到数据库的令牌是“null”。我使用开发证书和ad hoc的生产证书进行了大量测试。两者都成功地工作但是app store上的版本没有,我不知道为什么。我在2周前发布了这个问题,有人告诉我,我不应该使用我用于临时的配置文件,所以我创建了一个具有相同ID的新配置文件。更新昨天发布,我仍然有同样的问题。我需要找到一个永久的解决方案,因为我的用户对所有这些更新感到恼火,但我不知道如何测试,直到它在应用商店获得批准。
如果有人可以提供想法或帮助,我会非常感激。提前致谢。
P.S。如果它有帮助,我从我的设备中删除了我的应用程序并从应用程序商店再次安装...它没有问我是否要接收推送通知但是从手机设置启用了应用程序...
答案 0 :(得分:11)
APNs沟通有3个步骤:
在您的情况下,我了解您的问题出在第1步,因为您说您的设备ID为空,而应用程序并没有询问您有关APN的权限。因此,更改服务器证书或从gateway.sandbox.push.apple.com切换到gateway.push.apple.com不会有帮助,因为错误发生在之前。
这显然是您的证书问题。您应该检查是否已在 Apple iOS Provisioning Portal 中完成了所有必需的步骤:
如果您希望确保使用正确的配置文件生成二进制文件,然后再将其提交到AppStore,请执行以下操作:
我敢打赌,如果您查看以前存档的应用,则会看到错误的个人资料。 这是您的应用无法返回deviceToken的唯一原因。(除非收到它但未正确发送到您的服务器,上述通信的第2步中存在问题)。
答案 1 :(得分:2)
您使用 gateway.push.apple.com 而不是 gateway.sandbox.push.apple.com 吗?
答案 2 :(得分:0)
如果您为应用程序创建了新的配置文件,我认为您还需要在服务器上生成新的证书。
答案 3 :(得分:0)
如果您可以通过连接与包含设备令牌空问题的应用安装的设备来检查“控制台应用”(管理器>设备>控制台)中的应用日志。
基于此
no valid 'aps-environment' entitlement string found for application
问题是由于当前的Provisioning Profile不包含 APNS信息,因为供应配置文件是在之前创建的 创建APNS证书。
解决方案:创建新的配置文件&选择Xcode中的Provisioning Profile将清除错误。
您可以执行terminal命令来检查'生产临时 profile'支持apns环境,它应该类似于以下内容:
安全cms -D -i Path_Of_Your_AppStoreDistribution.mobileprovision
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>H22LLUHM4D.com.company.appName</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
</dict>