我有应用程序定期从我的服务器接收APN。它在启动时调用registerForRemoteNotificationTypes,然后定期重新获取它(在工作时)。它正确接收设备令牌并将其发送到后台服务器供以后使用。
但是有一个问题:
- 启动应用程序后,它会正确地通过应用程序启动时iphone生成的设备令牌接收从我的服务器发送的所有apn。
- 但是当应用程序停留在后台(没有任何重启)8-12小时后,它就会停止接收任何内容
- 通过检查应用程序/服务器日志,我看到该应用程序通过registerForRemoteNotificationTypes定期正确地重新获取新令牌,正确接收它从一开始就具有的完全相同的令牌,后台服务器继续使用它来发送apns并将它们发送到苹果而没有任何错误通过插座
- 但是消息根本不再显示在设备上,根本没有调用didReceiveRemoteNotification
- 手动退出应用程序并重新启动它有助于--registerForRemoteNotificationTypes返回另一个令牌,这非常有效 - 服务器使用它来发送apns,设备会立即接收它们,如预期的那样。
所以看起来iphone只在应用程序启动时重新分配苹果服务器的令牌,然后硬拷贝它。但令牌仍然有类似ttl时期的东西。
有没有办法强制iphone每次应用程序要求时返回新的,实际的设备令牌?如何强制iphone重新检查苹果服务器上的设备令牌,以确保它真的好运和健康?
请帮忙!
答案 0 :(得分:2)