iOS 推送 跳转 指定页面

584 阅读1分钟

接收到推送后创建一个全局变量来保存接收到的推送。

点击推送后会来到后台点击远程通知的代理方法,

//iOS10新增:处理后台点击通知的代理方法

-(**void**)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(**void** (^)(**void**))completionHandler API_AVAILABLE(ios(10.0)){

    NSDictionary * userInfo = response.notification.request.content.userInfo;
    if ([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {

        //应用处于后台时的远程推送接受
        [UMessage setBadgeClear:YES];

        //必须加这句代码
        [UMessage didReceiveRemoteNotification:userInfo];
        UIApplicationState appState = [UIApplication sharedApplication].applicationState;
        if (appState == UIApplicationStateActive) {
            [[PushNotiModel shareModel] addInfo:userInfo];
            [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_SHOW_DETAIL object:**nil**];
        }else{
            [[PushNotiModel shareModel] addInfo:userInfo];
        }
    }else{
        //应用处于后台时的本地推送接受
    }
    completionHandler();
}

- (void)appResignActive{
    [[PushNotiModel shareModel] removeAll];
}

- (void)appDidBecomeActive{
    //跳转详情
}

在这里处理当应用处于前台或者后台时如何跳转: 1.当应用处于前台时:保存数据,采取相对方式跳转,清空数据 2.当应用处于后台或者killed状态时:保存数据,在app becomeActive时采取相对方式跳转,清空数据。

这里需要注意的是当应用resignActive时需要清空数据,避免 本app -> home页(其他应用)-> 本app 导致becomeActive的操作。