我们向 iPhone 应用程序添加了接收推送通知。一切都在测试/沙箱环境中工作,我们从应用程序获取令牌 ID,并且可以从我们的服务器发送推送通知。
但是现在该应用程序已获得批准并从 Appstore 中出来,我们收到了空的推送令牌/通知 ID 发送到我们的服务器。我们已经有 600 多个...请注意,最终用户确实会弹出窗口以批准在应用程序中接收通知,应用程序只是在批准后向我们的服务器发送空令牌。因此,APNS 服务器可能会分发空令牌。
以下问题向我们表明,这可能是由于我们用于构建应用商店的配置文件中缺少“推送通知”权利: 如何检查 iOS 分发配置文件是否启用了推送通知?
缺少的权利是由于 Apple 的供应商网站中的一个错误,但在以下文章 http://developer.apple.com/library/mac/#documentation中提到的“在下载新配置文件之前修改任何现有配置文件”之后/NetworkingInternet/Conceptual/RemoteNotificationsPG/ProvisioningDevelopment/ProvisioningDevelopment.html
我们现在在 .mobileprovision 文件中拥有正确的权利:
<key>Entitlements</key>
<dict>
..
<key>aps-environment</key>
<string>production</string>
..
所以我们正在重建我们的应用程序并将其添加到商店。并希望届时能收到推送通知。
我希望以上内容可能对其他人有所帮助。但是现在要回答我的实际问题:当他们从商店安装下一个更新时,我们是否也会开始为已经下载当前版本的 600 多个用户接收新的推送令牌?还是我们需要在我们的应用程序中添加一些初始代码?registerForRemoteNotifications 方法现在只在应用程序启动时调用。当推送令牌 id 从空 ('') 更改为实际令牌时也会触发吗?当然,我们不想再等(小)一周等待新的 AppStore 批准,然后才发现推送通知仍然不适用于某些用户。希望有高手能告诉我们。
注意:我们使用的是在 MonoTouch 中开发的 iPhone 应用程序,并使用(旧)APNS-Sharp 库从我们的服务器发送通知,但我认为这些细节与此问题无关。