1

考虑到应用程序在操作之前刚刚启动,一旦用户从通知中心打开应用程序,是否有任何方法可以重定向到视图。(应用程序仍在后台运行)

例如,我正常启动应用程序,按主页按钮。然后我收到了一些远程通知,然后我从该推送通知的任何地方打开应用程序。

因为我有不同的推送通知可以重定向到我的应用程序的任何部分。我希望重定向不仅在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

在应用程序激活期间我是否仍然可以访问远程通知(内部的 json 数据)?这样我就可以做一些重定向。而且,这样用户就可以浏览他在中心的远程通知,并根据用户点击的通知被重定向到正确的视图。

更新

另一个例子:
(1)用户在(2)用户收到2个推送通知,application: didReceiveRemoteNotification:
第一个推送通知被重定向。
(3)用户去他的通知中心
(4)点击另一个通知。他还会被重定向吗?我认为该应用程序不会进入其中application:didReceiveRemoteNotification:application: didFinishLaunchingWithOptions:

4

3 回答 3

4

有与 DIDReceiveRemoteNotification 方法关联的用户信息...您可以按照委托方法使用它。

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSDictionary* userInfo =
        [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (userInfo) {
        [self processRemoteNotification:userInfo];
    }
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
    return YES;
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [self processRemoteNotification:userInfo];
}

之后在用户信息中有一个名为 APS 的密钥,您可以通过以下方法使用它。

NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

之后,您可以从 APNS 的有效负载中获取每个元素并决定重定向到哪个视图。

于 2012-10-23T10:31:07.580 回答
4

是的,你可以,这是一个简单的大纲/示例

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
 {
      //When notification is pressed on background it will enter here

      //Get strings based on information on your json payload for example
      if([[userInfo objectForKey:@"keyword"] isEqualToString:@"value"]){
           //redirect/push a screen here for example
      }
 }
于 2012-10-23T10:39:19.687 回答
1

是的,你可以。

收到远程通知后,将调用以下委托方法。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
于 2012-10-23T10:25:33.967 回答