一旦用户从通知中心打开应用程序,考虑到应用程序刚刚在操作之前启动,是否有任何方法可以重定向到View。 (应用程序仍在后台运行)
例如,我正常启动应用程序,按主页按钮。然后我收到了一些远程通知,然后我从那个推送通知中打开了应用程序。
因为我有不同的推送通知,可以重定向到我的应用程序的任何部分。我希望重定向不仅可以在
中使用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
在应用程序变为活动状态期间,我是否仍然可以访问远程通知(json数据)?这样我就可以做一些重定向。此外,用户可以直接浏览他在中心的远程通知,并根据用户点击的通知重定向到正确的视图。
更新
另一个例子:
(1)用户在application: didReceiveRemoteNotification:
中收到2个推送通知
(2)用户通过第一次推送通知重定向。
(3)用户进入他的通知中心
(4) )点击其他通知。他还会被重定向吗?我不认为该应用不会进入application:didReceiveRemoteNotification:
或application: didFinishLaunchingWithOptions:
答案 0 :(得分: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的工资负荷中获取每个元素,并决定重定向到哪个视图。
答案 1 :(得分: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
}
}
答案 2 :(得分:1)
是的,你可以。
收到远程通知后,将调用以下委托方法。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;