从主屏幕启动应用程序无法获得远程推送有效负载?但是从通知中心启动工作

时间:2012-06-21 16:23:25

标签: iphone ios push-notification

从主屏幕启动应用无法获得远程推送有效负载?但是从通知中心启动工作。

首先,应用未运行。收到远程推送通知后,用户不会立即启动带有通知的应用程序。然后,用户点击通知中心的通知即可启动应用,我可以从launchOptions获取推送有效负载:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if(userInfo) {
        //do some works with push payload.
    }
}

但是,如果用户通过点按主屏幕上的应用图标启动应用,我无法从launchOptions获取推送有效负载,但会调用application:didFinishLaunchingWithOptions:

再次:

  1. 应用未运行。
  2. 用户在收到推送通知时无法启动应用程序。
  3. 稍后,从Notification Center启动应用程序并从launchOptions获取推送有效负载。
  4. 从主屏幕启动应用无法从launchOptions获得推送有效负载。
  5. 这是SDK中的错误吗?如何通过从主屏幕启动应用程序来获得推送有效负载?

    谢谢!

2 个答案:

答案 0 :(得分:3)

你不能。

您只能在从通知中心启动时获取有效负载,因为这意味着用户对该通知感兴趣。

例如,如果我在Tweetbot上收到回复并且我想看到它,我会点击通知,但如果我只想检查我的推文,我会正常打开该应用。

如果有效负载包含用户必须接收的信息,则应用应与您的服务器联系并检索它。

答案 1 :(得分:0)

是的,如果用户通过点击图标启动应用程序,则远程通知的有效负载将丢失。

这不是很酷,但它是目前的工作方式。