我正在开发一个应用程序,可以接收推送通知,在某些情况下会触发后台获取操作。因此,我已经为我的应用程序启用了
当应用程序处于挂起状态时,推送通知会使应用程序唤醒并执行
当应用程序未运行时,只要没有被用户强制退出(请参见苹果文档),通知就会启动应用程序,并执行
有趣的是,如果我禁用远程通知后台模式,一切都正常。在这种情况下,推送通知到达时不会启动应用程序。
当远程通知后台模式开启且接收到通知启动未运行的应用程序时,我该如何防止通知消失?我需要在
remote-notification
后台功能。当应用程序处于挂起状态时,推送通知会使应用程序唤醒并执行
application:didReceiveRemoteNotification:fetchCompletionHandler
,横幅出现在主屏幕上,并且通知保留在通知中心中,直到用户点击它以启动应用程序。它的工作方式完全符合预期。当应用程序未运行时,只要没有被用户强制退出(请参见苹果文档),通知就会启动应用程序,并执行
application:didFinishLaunchingWithOptions
和application:didReceiveRemoteNotification:fetchCompletionHandler
。横幅出现在主屏幕上,但是通知随后消失了。它不会保留在通知中心中。此外,如果设备被锁定,有时通知甚至在完成警报声之前就消失了。有趣的是,如果我禁用远程通知后台模式,一切都正常。在这种情况下,推送通知到达时不会启动应用程序。
当远程通知后台模式开启且接收到通知启动未运行的应用程序时,我该如何防止通知消失?我需要在
application:didFinishLaunchingWithOptions
中包含什么内容,让应用程序知道它正在后台启动,并且不应丢弃通知吗?
application:didReceiveRemoteNotification:fetchCompletionHandler:
方法中正确调用了完成处理程序? - rmaddyapplication:didFinishLaunchingWithOptions
有一行代码使用了我正在使用的 SDK(Kinvey)来注册推送。我不知道具体发生了什么,但当它被调用时,应用程序似乎重新注册了推送,并且丢弃了传入的推送。因此,我写了几行代码来避免在后台启动应用程序时调用它,这解决了问题。 - ConfusedByCode