项目中因为好多地方要使用到通知,对比了好几个推送的sdk,最后还是选择了极光推送,从稳定性和集成方便来说,那是没问题的
极光推送 官网
文档地址: https://docs.jiguang.cn/jpush/client/iOS/ios_sdk/
注册完账号,添加应用,配置对应的开发环境和生产环境的p12证书,APP集成完毕之后,就可以通过控制台发送通知测试集成是否成功,如果是高峰期,极光推送可能会有一定的延迟,20分钟左右都是正常的,耐心等待一些
下面是APP启动初始化sdk的代码
-(void)registerRemoteWithOptions:(NSDictionary *)launchOptions
{
//Required
//notice: 3.0.0及以后版本注册可以这样写,也可以继续用之前的注册方式
JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];
entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound;
if (IOS8) {
// 可以添加自定义categories
// NSSet<UNNotificationCategory *> *categories for iOS10 or later
// NSSet<UIUserNotificationCategory *> *categories for iOS8 and iOS9
}
[JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
// Required
// init Push
// notice: 2.1.5版本的SDK新增的注册方法,改成可上报IDFA,如果没有使用IDFA直接传nil
// 如需继续使用pushConfig.plist文件声明appKey等配置内容,请依旧使用[JPUSHService setupWithOption:launchOptions]方式初始化。
[JPUSHService setupWithOption:launchOptions appKey:JPushAppKey
channel:@"App Store"
apsForProduction:isProduction
advertisingIdentifier:nil];
//2.1.9版本新增获取registration id block接口。
[JPUSHService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
if(resCode == 0){
NSLog(@"registrationID获取成功:%@",registrationID);
}
else{
NSLog(@"registrationID获取失败,code:%d",resCode);
}
}];
}
控制台推送的时候,如果APP角标不自增,是推送的时候把badge 一直默认为 1 了,应该设置为 +1
控制台角标设置
如果是想推送给自己服务器的某个用户,需要服务器那边对接并且在登录的时候,返回一个当前用户的id,专门用来推送给某个用户的,
[JPUSHService setAlias:[NSString stringWithFormat:@"%@",user_id] callbackSelector:nil object:nil];
网友评论