14

问题:应用程序没有出现在通知中心,安装完成后无法立即接收推送通知,应用程序通过 注册推送通知registerForRemoteNotificationTypes:

细节:

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

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

4

3 回答 3

17

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

设法通过以下方式修复它:

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

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

于 2013-02-08T03:19:06.577 回答
0

从Apple的文档中,分别在登录/注销时注册和注销应用程序可能存在问题:

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

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

于 2013-02-08T02:38:00.053 回答
0

好吧,我也有这个问题,我发现由于应用程序在之前的安装中卸载之前使用了 unregisterForRemoteNotifications。

And, in addition, if the application install again and login to register for the remote notifications, this problem will happen.

It happened also at the first install(installed after reset your iOS device). if you use the unregisterForRemoteNotifications before login, then register at the login operation, this problem will happen.

As this problem happened, you need to restart the iOS device.

For the unregisterForRemoteNotifications, we couldn't stop this problem, but we can reduce the probability of the occurrence of the problem, the method is:

If the device token didn't delete from provider at the previous install, then use unregisterForRemoteNotifications at the current install before login; Otherwise, you should never use unregisterForRemoteNotifications.

于 2013-07-04T04:15:27.127 回答