5

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

起初,应用程序没有运行。收到远程推送通知后,用户不会立即启动带有通知的应用程序。然后用户点击通知中心的通知启动应用程序,我可以从以下位置获取推送有效负载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. 稍后,从通知中心启动应用程序并从 launchOptions 获取推送负载。
  4. 从主屏幕启动应用程序无法从 launchOptions 获取推送负载。

这是SDK中的错误吗?如何通过从主屏幕启动应用程序来获取推送有效负载?

谢谢!

4

2 回答 2

3

你不能。

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

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

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

于 2012-06-21T16:40:18.817 回答
0

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

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

于 2013-03-02T15:03:13.040 回答