当应用程序死亡时收到的iOS无声通知
当发送后台推送与"content-available": "1"
,到应用程序被用户杀害,应用程序未启动到后台模式和application:didReceiveRemoteNotification:fetchCompletionHandler:
不被称为Apple doc say :当应用程序死亡时收到的iOS无声通知
使用此方法处理传入的应用程序的远程通知。 [...]另外,如果启用了远程通知后台模式,系统将启动您的应用程序(或将其从暂停状态唤醒),并在远程通知到达时将其置于后台状态。 但是,如果用户强制退出,系统不会自动启动您的应用程序。
我的问题是:是否有任何方式的下一次用户启动应用程序访问此无声推送有效载荷?
我尝试使用didFinishLaunchingWithOptions
方法的launchOptions
,但它们不包含推送有效负载。
NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
我使用的情况是,我只依靠推式信道接收数据的应用程序,但应用程序不能拉他们。
望着文档,好像你应该实现此方法:
可选FUNC应用(_应用:UIApplication的, didReceiveRemoteNotification用户信息:AnyHashable:任何], fetchCompletionHandler completionHandler:@escaping(UIBackgroundFetchResult) - > Void)
在该方法中,编写代码以存储有效内容(userInfo)。也许暂时将其存储在userDefaults中。然后,当应用程序启动时,检查有效负载是否可用。
您可以使用VoIP Push消息,在这里看到:
Voice Over IP (VoIP) Best Practices
有许多优点,使用PushKit接收VoIP的推动:
- [...]
- 如果收到VoIP推送时没有运行,您的应用会自动重新启动。
- [...]
要知道,你的应用程序必须启用具有VoIP功能的背景模式,如果使用不当,这可能是应用程序商店审批的问题。
依靠推送可能是一个坏主意,如果用户拒绝推送通知的权限会怎么样?或随后关闭它们? –
用户权限不会影响静默推送。即使用户关闭此推送**通知**,该应用程序仍然可以接收无声有效载荷 – Jan
啊。然后我今天学到了一些新东西! –