极光推送集成步骤官方文档写的已经很详细,集成 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 缓存的消息,无需自己存储记录通知消息