iOS应用程序从通知中心丢失
问题:应用程序没有出现在通知中心,安装完成后无法接收推送通知,应用程序通过registerForRemoteNotificationTypes:
注册推送通知registerForRemoteNotificationTypes:
。
细节:
- 设备重新启动后,应用程序通常会出现在通知中心,之后一切正常。
- 有时候,应用程序在APNs安装和注册后显示在通知中心(我仍然无法证实这一点,但我想我偶然发现了这种情况)。
- 每次用户login时,应用程序都会调用
registerForRemoteNotificationTypes
方法,每次用户都使用位掩码(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound
)和UIRemoteNotificationTypeNone
。 -
enabledRemoteNotificationTypes
返回正确的值。 - 最初,我在注销时使用了
unregisterForRemoteNotifications
方法,但是我将其更改为registerForRemoteNotificationTypes:UIRemoteNotificationTypeNone
因为嫌疑人可能会导致此问题。 - 这个问题发生在开发和adhoc构build和无论是通过xcode或iTunes安装的应用程序。
任何想法和build议将不胜感激。 谢谢!
这发生在我的一些设备上。 (没有出现在通知中心,没有收到推送。)
通过这样做来解决这个问题:
- 删除应用程序
- 从设备上删除所有相关的configuration文件。 设置应用>常规>configuration文件,然后点击与您的应用相关的每个configurationconfiguration文件,然后点击删除。 在iOS 8/9上,设置不再存在,请使用XCode> Windows>设备>select设备>显示configuration文件…>然后删除configuration文件(s)
- closures手机,然后再打开。
- 给5分钟
- 重新安装您的应用程序,configuration文件应自动安装。
- 启动应用程序,让它注册和东西。
- 再次testing推送通知
对我们来说,它不会立即工作,所以给它几分钟。
也许从苹果公司的文档中分别注册和注销应用程序时遇到了问题:
应用程序应该在每次启动时注册,并为其提供者提供当前令牌。
而不确定注销,他们没有提到在他们的编程指南注销,也许应用程序不应该注销,服务器应该处理,通过发送或不发送推送通知,取决于用户是否login。 这就是我过去做过的事情,从来没有遇到过这个问题,所以也许这个方法也适用于你。
那么,我也有这个问题,我发现,应用程序使用unregisterForRemoteNotifications之前卸载安装。
此外,如果应用程序再次安装并login以注册远程通知,则会发生此问题。
它也发生在第一次安装(重置您的iOS设备后安装)。 如果在login之前使用unregisterForRemoteNotifications,那么在login操作中注册,就会出现这个问题。
发生这个问题时,您需要重新启动iOS设备。
对于unregisterForRemoteNotifications,我们无法阻止这个问题,但是我们可以减less发生问题的概率,方法是:
如果设备令牌在上次安装时没有从提供程序中删除,则在login之前使用当前安装的unregisterForRemoteNotifications; 否则,你不应该使用unregisterForRemoteNotifications。