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

来源:互联网 发布:西安财经行知学院地址 编辑:程序博客网 时间:2024/04/29 10:33

当你收到通知时,有两种状态。
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];    }
1 0
原创粉丝点击