接收 UILocalNotification 时从 AppDelegate 加载特定的 UIViewController
Posted
技术标签:
【中文标题】接收 UILocalNotification 时从 AppDelegate 加载特定的 UIViewController【英文标题】:loading a specific UIViewController from AppDelegate when receiving UILocalNotification 【发布时间】:2015-01-09 11:52:28 【问题描述】:我得到了一个 UILocalNotification,它以这种方式在 UIViewController 的 UIView 部分中发送:
[[UIApplication sharedApplication] scheduleLocalNotification:_localNotif];
我希望我的应用在以下情况下响应它:
在后台时:如果用户点击通知唤醒应用并加载相应的 UIViewController(有多个 UIViewController) 在前台时:刷新当前 UIViewController 中的数据文档引导我在 AppDelegate.m 中修改此方法:
- (void)application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification
NSLog(@"received notification");
//reload views
但是我不知道如何重新加载 UIViewController。
我可以使用 UILocalNotification 的哪些属性来确定哪些 UIViewController 发送了吗? 如何从 AppDelegate 加载特定的 UIViewController?【问题讨论】:
【参考方案1】:我可以使用 UILocalNotification 的哪些属性来确定哪些 UIViewController 发了吗?
您可以将UILocalNotification
的userInfo
属性用于此特定目的。所以,类似:
localNotification.userInfo = @ @"currentViewController" : self ; // put the instance of the current view controller into the userInfo dictionary
如何从 AppDelegate 加载特定的 UIViewController?
您可以通过应用程序主UIWindow
的rootViewController
属性访问当前视图堆栈,该属性存储在AppDelegate
的window
属性中。如果您只想通知您的 UIViewController
收到本地通知,您可以发布 NSNotification
并将应作为观察者重新加载的视图控制器添加到特定的 NSNotification
所以,例如当您收到UILocalNotification
时,代码可能看起来像这样:
- (void)application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification
[[NSNotificationCenter defaultCenter] postNotificationName:@"received_local_notification" object:nil];
还有viewDidLoad
中的UIViewController
中要重新加载的:
- (void)viewDidLoad
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTheViewController:) name:@"received_local_notification" object:nil];
【讨论】:
以上是关于接收 UILocalNotification 时从 AppDelegate 加载特定的 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发中UILocalNotification本地通知实现简单的提醒功能
iOS的本地推送UILocalNotification的使用
在 Cocoa 中,我是不是需要在释放对象时从接收 KVO 通知中删除它?
在接收 ALAssetsLibraryChangedNotification 时从 ALAssetsGroupSavedPhotos 组中检索 ALAsset 时应用程序崩溃