当应用程序被用户强行退出时,处理推送通知iOS(替代品?)

时间:2016-02-16 17:13:32

标签: ios objective-c notifications push

我在iOS中的推送通知存在问题,与thisthis以及another one类似。

此外,this post恢复所有可能的情况。 就我而言:

  • app is not RUNNING
  • content-available: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 
        }

    }

到目前为止没问题,我有足够的负载来处理该信息(例如从服务器获取新数据)。

但是如果用户从图标中打开应用程序,我就无法处理有效负载(虽然执行了didFinishLaunchingWithOptions,但根据文档{{3},我没有获得aps信息})。

所以,问题是,有什么方法可以解决这个问题吗? 例如,我使用WhatsApp进行了测试,他们处理了这种情况,(可能他们使用的是VOIP通知而不是远程通知)

此致

1 个答案:

答案 0 :(得分:2)

您永远不应该认为状态在通知发送到用户启动应用的时间之间保持一致。甚至,它也不是同一个设备。我经常会得到一个"嘿!做点什么!"在我的手机上通知,如果我的iPad很方便,请在我漂亮的大iPad屏幕上回复它。

相反,您应该往返服务器并在应用启动或激活时获取该用户的最新状态。