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。