我在我的应用中使用本地通知,我唯一关心的是用户点击的确切通知。
方法
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
收到通知时会触发但我需要在用户点击时处理通知,这对我来说没用。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
仅在app未运行时触发,也不是我需要的
我搜索了网络,但发现只有应用程序处于活动状态或未运行的句柄。当应用程序在后台时,我该如何处理它?</ p> 换句话说,我需要的是识别用户在应用程序在后台运行时点击的确切通知
答案 0 :(得分:5)
创建UILocalNotification时,您可以设置userInfo
以设置任何关联的数据/唯一标识符。
实施例
UILocalNotification *someNotification = [[UILocalNotification alloc] init];
[someNotification setUserInfo:@{ kSomeUniqueIdentifierKey : @"identifier" }];
然后,
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
if ([notification.userInfo[kSomeUniqueIdentifierKey] isEqualToString:@"identifier"]) {
// We know what notification was responded to based on userInfo
}
}
上述方法会在应用程序运行时收到通知后立即触发,或者当用户点击您的应用在后台时触发的通知时立即触发。
如果您想在应用程序运行时忽略这些通知,您可以随时检查应用程序的状态,以确定它是在运行时还是在后台响应通知。
答案 1 :(得分:-1)
我正在使用iOS 9,解决方案是检查AppDelegate didFinishLaunchingWithOptions中的launchOptions。如下:
// Were we launched from a local notification?
if let lo = launchOptions
{
if let ln = lo[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification
{
// Do our thing...
}
}