极光推送 应用内自订定消息(非APNs)笔记

极光推送集成步骤官方文档写的已经很详细,集成 OK 怎么用才是重点:

一、iOS 推送消息分两种(Background/Foreground)暂且叫 app 退到后台跟进入前台
Background : 推送默认有声音
Foreground : 需开发者自定义

二、推送的消息:分APNs消息/非APNs消息

1、APNs 消息 在极光推送的后台直接快速编辑推送消息即可,对应app里接收远程通知的方法是:

  • (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler: (void (^)(UIBackgroundFetchResult))completionHandler {
    [JPUSHService handleRemoteNotification:userInfo];
    completionHandler(UIBackgroundFetchResultNewData);
    }
    此方式的缺点是app 由Background进入Foreground 无法捕捉到该通知消息 自定义响应事件,
    无法利用KEY区分不同类型的通知,一般只是测试用

2、非APNs消息 不管App 在Background或者Foreground 都能接收到
在appDelegate中注册极光推送并添加以下通知的观察者

NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self
selector:@selector(networkDidReceiveMessage:)
name:kJPFNetworkDidReceiveMessageNotification
object:nil];

  • (void)networkDidReceiveMessage:(NSNotification *)notification{
    //1、此处可添加声音 (app 在 Foreground 默认无声音,只能通过自定义)
    //2、获取自动的通知消息
    NSDictionary * userInfo = [notification userInfo];
    NSDictionary * extrasDict = [userInfo objectForKey:@"extras"];
    NSString * KEY = [extrasDict objectForKey:@"Key"];
    //3、根据不同的KEY 做不同的响应(通知其类响应)
    }
    以上方式的优点:不管app在Background还是Foreground 都能响应通知,即使是由Background进入Foreground 也能一一执行所有APNs 缓存的消息,无需自己存储记录通知消息

你可能感兴趣的:(极光推送 应用内自订定消息(非APNs)笔记)