iOS:手机锁定时,本地通知显示速度非常慢
我们一直在用Swift开发一个iOS应用程序(仅限iOS 9+)。我们对某些事情使用VOIP通知,然后使用本地通知向用户实际显示消息 我的问题是,当手机被锁定时,本地通知可能需要15秒才能真正显示出来,即使我可以看到调试输出和代码在我期望的时候立即运行 这是我显示通知的代码:iOS:手机锁定时,本地通知显示速度非常慢,ios,xcode,swift,notifications,apple-push-notifications,Ios,Xcode,Swift,Notifications,Apple Push Notifications,我们一直在用Swift开发一个iOS应用程序(仅限iOS 9+)。我们对某些事情使用VOIP通知,然后使用本地通知向用户实际显示消息 我的问题是,当手机被锁定时,本地通知可能需要15秒才能真正显示出来,即使我可以看到调试输出和代码在我期望的时候立即运行 这是我显示通知的代码: let notification = UILocalNotification() notification.alertTitle = "Title text.".local notification.ale
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实现中的开关/案例中运行。具体而言,在该职能范围内:
func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!)
此外,值得注意的是,并非所有设备都会发生这种情况。我们有一台iphone6s测试设备,无论我们重新启动设备多少次,重新安装应用程序多少次,甚至将iOS升级到新版本,每次都会发生这种情况。我们还有一些其他的测试设备没有出现这种情况。请阅读苹果文档- 确定远程通知传递的优先级 服务器向Apple通知服务器提供的远程通知 服务包括各种元素,包括有效负载数据、 过期日期、优先级等。远程通知支持 两级推送优先级。一个人递送通知 马上。另一个延迟通知的传递,直到 节能时间。除非通知确实需要 立即交付,使用延迟交付方法
请尝试设置->常规->重置->重置网络设置我找到了可能的原因-iPhone与Apple Watch配对。尽管手表在抽屉里并且已经关机,iPhone还是试图将通知发送到它。在我们从手表上取下未配对的iPhone并等待一段时间后,一切都恢复正常。我不确定(因此这是一条评论,而不是答案),但我想当它处于睡眠模式时,iOS不会优先考虑通知。或者它每隔几秒钟只获取一次通知,以最大限度地提高电池电量。这就解释了当手机解锁时,通知按预期工作的原因。事实并非如此,因为应用程序正在使用VOIP通知,并且在后台运行。不过,这个问题越来越奇怪,因为它并没有发生在我们所有的测试设备上。它可以在一些设备上重复,但不能在所有设备上重复。重新启动设备、安装/卸载或更新iOS版本对其也没有影响。请检查一次facebook messenger应用程序。我猜它使用本地通知进行呼叫。检查其延迟是否为10-15秒!我确实遇到过本地通知没有在准确时间触发的情况,所以可能这是一种系统设计,可以在准确时间内降低本地通知的优先级。这段代码在哪里运行?你能发布完整的函数吗?这段代码是在我们的PKPushRegistryDelegate实现中运行的,特别是在这个函数中:func pushRegistry(注册表:PKPushRegistry!,didReceiveIncomingPushWithPayload:PKPushPayload!,forType:String!)非常好的观察结果,我将研究创建一个测试应用程序,仅用于测试本地通知。我们之所以使用VOIP通知,是因为我们的印象是,它们的发送速度最快。在我们的例子中,有一个人在另一端等待另一个人回答/拒绝,所以每一秒都很重要。@VilleRinne你有什么解决办法吗?我们也面临同样的问题。