ios - 如何处理用户点击的本地通知

标签 ios iphone objective-c apple-push-notifications uilocalnotification

我在我的应用程序中使用本地通知,我唯一关心的是用户单击的确切通知。

方法

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

收到通知时触发,但我需要在用户单击通知时处理通知,因此这对我来说毫无用处。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

仅在应用程序未运行时触发,也不是我需要的

我在网上搜索,但发现仅处理应用程序处于事件状态或未运行的情况。当应用程序在后台时我该如何处理?

换句话说,我需要的是识别用户在应用程序在后台运行时单击的确切通知

最佳答案

创建 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
    }
}

上述方法会在应用程序运行时收到通知后立即触发,或者当用户点击应用程序在后台时触发的通知时立即触发。

如果您想在应用程序运行时忽略这些通知,您可以随时检查应用程序的状态,以确定它是否在运行时或在后台响应通知。

关于ios - 如何处理用户点击的本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220857/

相关文章:

ios - 呈现模态视图 Controller 的延迟

iphone - 将 iPhone 应用程序连接到安全的 RESTful API?

iphone - 将 NSMutableArray 写入文件然后读取它

ios - 使用 popToRootViewController 传递数据

objective-c - 'delegate' 属性可以支持多个协议(protocol)吗?

ios - 将任务分派(dispatch)到队列中以便在另一个线程中运行任务

objective-c - iOS Twitter集成测试

iOS - 关于展示和推送 Controller 的问题

ios - Objective-C:如何拒绝子类访问父属性?

ios - UIAlertViewDelegate :clickedButtonAtIndex and two buttons