it-swarm.dev

通知中心缺少iOS应用程序

问题:该应用程序未出现在通知中心,并且在安装完成后无法立即收到推送通知,并且应用程序通过registerForRemoteNotificationTypes:注册推送通知。

细节:

  • 设备重启后,应用程序通常会出现在通知中心,之后一切正常。
  • 有时,应用程序会在安装和注册APN之后立即显示在通知中心(我仍然无法确认这一点,但我认为我偶然发现了这种情况)。
  • 每次用户登录时以及每次用户分别使用位掩码(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)和registerForRemoteNotificationTypes注销时,应用程序都会调用方法UIRemoteNotificationTypeNone
  • enabledRemoteNotificationTypes返回正确的值。
  • 最初我在退出时使用了方法unregisterForRemoteNotifications,但由于怀疑这可能导致问题,我将其更改为registerForRemoteNotificationTypes:UIRemoteNotificationTypeNone
  • 开发和adhoc构建中都会出现此问题,无论应用程序是通过xcode还是iTunes安装。

任何想法和建议将不胜感激。谢谢!

13
e2l3n

这发生在我的一些设备上。 (没有出现在通知中心,也没有接到推送。)

管理通过执行以下操作来修复它:

  • 删除应用
  • 从设备中删除所有相关的配置文件。设置应用>常规>配置文件,然后点按与您的应用相关的每个配置文件,然后点击删除。在iOS 8/9上,设置不再存在,使用XCode> Windows>设备>选择设备>显示配置文件...>然后删除配置文件
  • 关闭手机,然后再打开。
  • 给5分钟
  • 重新安装您的应用程序,应自动安装Provisioning Profile。
  • 启动应用程序,让它注册和填充。
  • 再次测试推送通知

对我们来说,它没有立即起作用,所以给它几分钟。

16
just.jimmy

好吧,我也有这个问题,我发现因为应用程序在上次安装之前卸载之前使用了unregisterForRemoteNotifications。

此外,如果应用程序再次安装并登录以注册远程通知,则会出现此问题。

它也发生在第一次安装(重置iOS设备后安装)。如果您在登录前使用unregisterForRemoteNotifications,然后在登录操作中注册,则会出现此问题。

出现此问题时,您需要重新启动iOS设备。

对于unregisterForRemoteNotifications,我们无法阻止此问题,但我们可以降低问题发生的概率,方法是:

如果设备令牌在上次安装时没有从提供程序中删除,则在登录前使用当前安装时的unregisterForRemoteNotifications;否则,您永远不应该使用unregisterForRemoteNotifications。

0
Jennifer

也许在登录/注销时分别注册和取消注册应用程序存在问题,来自 Apple的文档

应用程序应在每次启动时进行注册,并为其提供者提供当前令牌。

并且不确定取消注册,他们没有提到在他们的编程指南中取消注册,也许应该永远不会注销应用程序,服务器应该处理它,通过发送或不发送推送通知,具体取决于用户是否登录。这就是我过去的做法,从未遇到过这个问题,所以也许这种方法也适合你。

0
irodrigo17