我对NSNotificationCenter和didReceiveRemoteNotification有一些问题。当我收到来自APNS的新通知时,我想打开我的ViewController。在体内通知我有objectId -这是关键。我试着将我的ViewController打开到didReceiveRemoteNotification中,但它不起作用(
AppDelegate.m
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[[NSNotificationCenter defaultCenter]
postNotificationName:kDidReceiveRemoteNotification
object:userInfo];
}NewsDetailViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(didReceiveRemoteNotification:)
name:kDidReceiveRemoteNotification
object:nil];
}
- (void)didReceiveRemoteNotification:(NSNotification *)notification
{
NSLog(@"%s %@",__func__,[notification.userInfo description]);
}Const.h
#define kDidReceiveRemoteNotification @"UIApplicationDidReceiveRemoteNotification"ViewController未加载。我不知道该怎么办。
发布于 2015-08-28 07:05:43
您所附加的示例代码的当前流程是:
我很难从您的问题中理解这一点,但是如果由于收到推送通知而试图启动的视图控制器是NewsDetailViewController,那么您的代码就不会这么做。您的代码所做的是打印出要记录的通知(假设其他人确保在收到推送通知之前加载了NewsDetailViewController )。
为了在收到推送通知时加载NewsDetailViewController,不需要将通知发送到NSNotification
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NewsDetailViewController *newsVC = [[NewsDetailViewController alloc] initWithNibName:@"NewsDetailViewController" bundle:nil];
[self.window.rootViewController.view addSubview:newsVC.view];
}或者任何其他更适合你的加载逻辑。但是在您发布的当前代码中,在接收推送通知和加载ViewController之间没有任何联系。
我希望这能帮到你。祝好运!
https://stackoverflow.com/questions/32260282
复制相似问题