您的位置:首页 > 移动开发

iOS如何对本地通知进行处理(当没有打开APP时怎么处理收到的通知)

2016-05-25 12:26 627 查看
当你收到通知时,有两种状态。

1、程序在活跃状态,或者是后台。

这时候当你收到通知,就会走下面两个方法:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

if (application.applicationState == UIApplicationStateActive) {
[JPUSHService setBadge:0];
}
//对收到的信息 进行 符合自己业务的 操作
[self _operateLocalNotificationByUserInfo:userInfo];

}
//iOS 7 Remote Notification
- (void)application:(UIApplication *)application didReceiveRemoteNotification:  (NSDictionary *)userInfo fetchCompletionHandler:(void (^)   (UIBackgroundFetchResult))completionHandler {

if (application.applicationState == UIApplicationStateActive) {

[JPUSHService setBadge:0];
}

//对收到的信息 进行 符合自己业务的 操作
[self _operateLocalNotificationByUserInfo:userInfo];

}


2、当你的APP已经被杀死了。

这时候来了通知,你点击通知栏或者APP图标进入程序的话,上面的两个方法显然就不走了啊。但是他一定会走这个方法:

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


这里的launchOptions 显然是个字典。而有对应的KEY,通过apple提供的这个KEY,能取到通知的内容。再做对应的操作就好了:

//判断是否有通知
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];

if (notification != nil) {
NSDictionary *userInfo = notification.userInfo;

if (application.applicationState == UIApplicationStateActive) {
[JPUSHService setBadge:0];
}
//这里是我的业务,与此问题没关系,您需要 根据您自己的业务
[self _operateLocalNotificationByUserInfo:userInfo];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 通知 通知栏