从推送通知收到的 alertView 打开应用程序后冻结
Posted
技术标签:
【中文标题】从推送通知收到的 alertView 打开应用程序后冻结【英文标题】:App freezes after opening it from an alertView received from a push notification 【发布时间】:2015-07-07 05:18:03 【问题描述】:我已将 APNS 嵌入到我的应用程序中,并导航到一个显示通知详细信息的屏幕。问题是,当单击警报视图中的视图按钮时,应用程序导航到 .xib 文件并冻结。 我能做些什么来解决这个问题? 下面是用于打开 viewController xib 的代码:
RearTableViewController *rearView = [[RearTableViewController alloc]initWithNibName:@"RearTableViewController" bundle:nil];
DetailsViewController *detailsViewController = [[DetailsViewController alloc]initWithNibName:@"Details" bundle:nil];
detailsViewController.messageID = [[[NSUserDefaults standardUserDefaults] objectForKey:@"messageId"] intValue];
UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:detailsViewController];
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearView];
SWRevealViewController *mainRevealController = [[SWRevealViewController alloc]
initWithRearViewController:rearNavigationController frontViewController:frontNavigationController];
mainRevealController.delegate = self;
self.window.rootViewController = mainRevealController;
【问题讨论】:
应用程序不仅可以在 applicationDidFinishLaunching... 中获取 APNS 消息,如果应用程序启动,那么它将在 ..didReceiveRemoteNotification 中获取 APNS:.. 我不认为在这种情况下更改 rootViewController是个好主意。 我也尝试过展示一个视图控制器。这也不起作用。 【参考方案1】:这可能会对您有所帮助。
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
SplashVC *rootVC = [[SplashVC alloc]initWithNibName:@"SplashVC" bundle:nil];
UINavigationController *navigation = [[UINavigationController alloc]initWithRootViewController:rootVC];
[navigation setNavigationBarHidden:YES];
self.window.rootViewController = navigation;
[self.window makeKeyAndVisible];
这是我收到推送并显示警报时的代码。如果警报按下按钮之一,那么这将显示我的视图控制器。
LocationViewController *locationVC = [storyboard instantiateViewControllerWithIdentifier:@"LocationVC"];
locationVC.latitude = fLat;
locationVC.longitude = fLong;
[self.navController presentViewController:locationVC animated:YES completion:nil];
【讨论】:
我也试过这个。应用程序仍然冻结,并且仅在从 alertView 导航到时才会发生这种情况。 何时显示警报?当收到推送时显示警报? 不,兄弟。它仍然不起作用。应用程序现在崩溃 你在用故事板吗?SettingsVC *controller = [[SettingsVC alloc]initWithNibName:@"SettingsVC" bundle:nil]; [self.navigationController pushViewController:controller animated:YES];
你有没有试过这么简单。因为我在我的一个旧项目中使用它\以上是关于从推送通知收到的 alertView 打开应用程序后冻结的主要内容,如果未能解决你的问题,请参考以下文章