我在 iOS 中遇到推送通知问题,情况与 this 类似。和 this和 another one .
此外,this post恢复所有可能的情况。 就我而言:
- 应用未运行
- 可用内容:1
- UIBackgroundModes 包含“远程通知”和“获取”
如果用户强制退出应用程序并收到推送通知,则它可以通过警报或图标打开应用程序。 当用户点击通知时,应用程序将被打开并执行以下方法:
- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Handle for notifications when app is closed
if (launchOptions) {
NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];
if (apsInfo) {
// handle notification
}
}
到这里没问题,我有有效负载来处理该信息(例如从服务器获取新数据)。
但是,如果用户从图标打开应用程序,我没有任何方法来处理有效负载(根据文档 here,虽然执行了 didFinishLaunchingWithOptions,但我没有 aps 信息)。
那么,问题来了,有什么办法可以解决吗? 例如,我用 WhatsApp 进行了测试,他们处理了这种情况,(可能他们使用的是 VOIP 通知而不是远程通知)
问候
最佳答案
您永远不应该假设状态在通知发送时间和用户启动应用程序之间保持一致。甚至,它也不是同一个设备。我经常会听到“嘿!做点什么!”在我的手机上发送通知,如果我的 iPad 在手边,可以在我漂亮的 iPad 大屏幕上回复它。
相反,您应该往返服务器并在应用启动或激活时获取该用户的最新状态。
关于ios - 当应用程序被用户强制退出时处理推送通知 iOS(替代方案?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35438869/