iOS:手机锁定时显示本地通知非常慢

时间:2016-06-07 15:46:05

标签: ios xcode swift notifications apple-push-notifications

我们一直在Swift中开发iOS应用程序(仅限iOS 9+)。我们正在为某些事情使用VOIP通知,然后使用本地通知向用户实际显示消息。

我的问题是,当手机被锁定时,实际显示的本地通知最多可能需要15秒,即使我可以看到我的调试输出并且代码在我预期时立即运行。

这是我显示通知的代码:

let notification = UILocalNotification()
    notification.alertTitle = "Title text.".local
    notification.alertBody = "Body text."
    notification.alertAction = "Action".local
    notification.category = Notification.CallCategory
    notification.soundName = localNotificationSoundName
    notification.userInfo = msg.dictionary()

    UIApplication.sharedApplication().presentLocalNotificationNow(notification)

除了延迟之外,一切都按预期工作,当手机未锁定时,没有延迟,通知按预期工作。

有什么想法吗?

修改

作为澄清,此代码在我们的PKPushRegistryDelegate实现中的switch / case中运行。特别是在这个功能中:

func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!)

此外值得注意的是,这并非在每台设备上都会发生。我们有一个iPhone 6s测试设备每次都会发生,无论我们重启设备多少次,重新安装应用程序甚至将iOS升级到更新版本。我们还有一些其他测试设备没有发生。

3 个答案:

答案 0 :(得分:1)

请阅读Apple doc -

  

优先处理远程通知

     

您的服务器向Apple Notification提供的远程通知   服务包括各种元素,包括有效载荷数据,a   到期日,优先级等。远程通知支持   两级推送优先级。一个人发送通知   立即。另一个延迟通知的发送直到   节能时间。除非通知确实需要   立即交货,使用延期交货方式。

NotificationBestPractices

  1. 我知道你的问题是慢local notification,但仍然要确保你有优先级远程通知。

  2. 我在使用本地通知测试该应用时遇到了一定的延迟。也许这就是系统的设计方式,而不一定是一个缺陷。对于VOIP案例,我仍然认为你应该使用推送通知来通知电话(也许你在通知之前有一些内部计算)。但是看看Facebook Messenger应用程序,看起来它确实混合匹配推送/本地通知来通知用户呼叫。尽量观察延迟。

  3. 制作另一个简单的应用程序,显示与上述相同代码的本地通知,并观察它是否也有一些延迟。对于此测试,请不要使用远程通知来触发本地通知,只需在应用启动后进行测试或类似的测试。这是为了确保系统是否在推送通知后立即延迟某些应用程序通知?

答案 1 :(得分:1)

请尝试设置 - >常规 - >重置 - >重置网络设置

答案 2 :(得分:0)

我找到了可能的原因 - iPhone与Apple Watch配对。尽管手表在抽屉中并关闭,但iPhone正试图将通知发送给它。在观看了未配对的iPhone并等待一段时间之后,一切都变得正常了。