ios - 当应用程序被用户强制退出时处理推送通知 iOS(替代方案?)

标签 ios objective-c notifications push

我在 iOS 中遇到推送通知问题,情况与 this 类似。和 thisanother 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/

相关文章:

ios - 每次在按钮中完成点击时执行一个方法

ios - 在更新 iOS 程序注册 ID 时丢失

javascript - 来自 Web 应用程序的通知 (Android)

mercurial - 乌龟 Mercurial : how to get notified whe something pushed to a central repo

ios - 内存警告和崩溃 ImageIO-jpeg-data

ios - If 语句会导致 iOS 设备崩溃,但不会导致模拟器崩溃

objective-c - 通过引用 ObjectiveC 方法快速传递数组

ios - 使用自动布局空间约束时的剩余空间

ios - 在加载应用程序时更改语言不会翻转阿拉伯语的 UI

ios - 每日通知 Swift 3