iOS第三方集成之jpush极光推送
来源:互联网 发布:软件接口怎么费 编辑:程序博客网 时间:2024/05/22 12:06
iOS第三方集成之jpush极光推送
现在很多app都带推送功能,极光推送是很受大家欢迎的第三方推送,本文将为iOS初学者和初次设计开发推送的攻城狮们提供以下自己的使用心得。
大家可以边参考官方文档,边看我整理的内容。
一、推送前期准备
1.用开发者账号申请好具备推送功能的相关证书(真机调试证书和发布证书,此时记得保存好4个文件,aps_development.cer文件aps_production.cer文件以及这两者对应的描述文件,就是.mobileprovision后缀的两个齿轮图标的文件);
此处解释说明一下:推送在iOS中分为开发环境和生产环境,开发环境你可以理解为推送给没上线的app或者说是在测试中的app,该环境对应的一般是真机调试证书;生产环境就是你的app已经上架了,并且它是由带推送功能的证书发布的,我们通过生产环境推送给安装了你app的用户,它对应的是发布证书。
2.去jpush官网注册一个账号,并下载jpush的SDK(目前版本是1.8.8了);
3.登录jpush账号,注册一个你的应用,这时候会生成一个appKey,这个是很重要的东西!!!后面会用到!!!这时候我们发现要我们上传两种APNs证书文件:一种开发环境,一种生产环境。此时就需要我们第1步的东西了,我们用钥匙串分别打开第一步保存的两个.cer文件,记住,不能点开钥匙串中二者前面的小三角形箭头!!!然后右键,选择导出“。。。。。。”,这时候我们就会分别导出对应的.p12文件,这个就是这里需要的APNS证书文件,发布的p12对应上传到生产环境,真机的p12对应上传到开发环境,密码无所谓,点击保存。这时候他会自动校验你两个证书是否有效,无效会报错的!成功验证后我们发现,连bundle id都不用我门填,自动填充了!!
这些就是前期准备工作
二、集成到工程中
1.将下载的sdk拖入我们的工程,就两个东西,一个是APService.h,一个是libPushSDK-1.8.8.a。证书选择要正确,确保是我们前期工作中生成的证书!
!!!特别注意:我们需要导入必须得库,不然会报错!
必须依赖库:CoreGraphics.framework、CFNetwork.framework、CoreFoundation.framework、CoreTelephony.framework、SystemConfiguration.framework、Security.framework、libz.tbd、Foundation.framework、UIKit.framework
运行后会弹框问我们是否接收推送,若无肯定是没有集成好!
PS:如果使用cocoapods导入极光的话,这一步的操作可以忽略,cocoapods会自动关联依赖库,cocoapods的使用请见我的博客!极光推送的cocoapods语句为:pod “JPush”
2。新建一个plist文件,起名就叫PushConfig.plist,不能叫其他任何名字,差一个都不行,否则会报找不到配置文件的错!!!切记!!!在该plist文件中加入三个string类型的值,分别是:APS_FOR_PRODUCTION,该值暂时写0或faulse(此值的意思是区分app是接收开发环境的推送消息还是生产环境的推送消息,当我们上线的时候,切记切记一定要将此值改为true或者1!!!否则你上线的app收不到任何推送消息!!!)
第二个key是CHANNEL,这是死值,无论什么环境都写Publish channel;
第三个是APP_KEY,这个就是准备工作说的那个appkey,不能写错!!!
3.在appdelegate.m中做如下操作:
注册推送:
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];self.window.backgroundColor = [UIColor clearColor];UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]];self.window.rootViewController = nav;//初始化极光推送[self initJPushWithOptions:launchOptions];[self.window makeKeyAndVisible];return YES;
}
//初始化极光推送
- (void)initJPushWithOptions:(NSDictionary *)launchOptins{
//注册APNS类型
if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1
if (PNCisIOS8Later) {//ios 8 [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];} else {//ios 7.1 [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];}
else //ios 7.1以下
[APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];
endif
//初始化[APService setupWithOption:launchOptins];
}
上报我们的deviceToken:
- (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken{
[APService registerDeviceToken:deviceToken];
NSString *str = [APService registrationID];
}
对收到推送的处理也是在appdelegate.m中进行的,现在不写这个,我们继续注册
4.注册tag值、alias等:
极光推送有若干中推送方式,一是推送全部,意思就是无论是安卓还是iOS都给你推送去;二是根据iOS的tag值取推送,tag可以标记一个群体,比如说你给北大的所有学生标记tag为beida,当然,这不是字符串,是一个NSSet类型的,你给清华的所有学生标记为Qinghua,他们都下载了叫“中南海”的app,现在这个app想给北大的学生推元月6号放假的消息,给清华的学生推元月7号放假的消息,那我们就可以根据事先设定好的tag值去分推,基本上就是这个意思;第三是根据alias(别名)推,这个在实际应用中一般可以用来标记某个用户或者某一小部分用户,给特定的一个人或者一小部分人推消息,接着上个比喻,我想给清华的韩梅梅推消息,告诉她寒假要值班到元月10号才可以回家,或者我想推送给一个寝室的6个人一个消息,那我们就可以实现让她或他们注册号alias,然后我就能进行个推了,alias主要就是这个作用;还有根据registrationID的,这个就是单独的一个设备了,推送到指定的一个设备上。
我demo中是点击按钮就发送注册信息的,点击按钮的事件触发如下:
//点击按钮时候向jpush注册
- (void)registerJpush{
//向jpush注册tag值和alias(别名)
NSString *strTags = [NSString stringWithCString:”PPP” encoding:NSUTF8StringEncoding];
NSSet *tagSet = [[NSSet alloc] initWithObjects:strTags ,nil];
[APService setTags:tagSet alias:@”1060456561” callbackSelector:@selector(tagsAliasCallback:tags:alias:) target:self];
}
//此方法用来检测有没有注册成功
- (void)tagsAliasCallback:(int)iResCode tags:(NSSet*)tags alias:(NSString*)alias{
NSLog(@"iResCode:%d,tags:%@,alias:%@",iResCode,tags,alias);
}
实现方法主要目的是用来查看到底有没有注册成功,若成功注册,那么返回的iResCode就是0!否则其他的返回值可以根据官方文档去查找错误原因!
5.收到消息的处理
这个之前说了,要写在appdelegate.m中。主要代码如下:
- (void)application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo{
[APService handleRemoteNotification:userInfo];
}
- (void)application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
//向服务器上报收到的消息
[APService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
我们可以在这两个方法中对接受到得userInfo进行处理,这个userInfo就是jpush推送来的消息内容,其基本构成如下(拿一个简单的推送)
Printing description of userInfo:
{
“_j_msgid” = 1575147327;
aps = {
alert = b882a106550640a207c82dc8;
badge = 1;
sound = default;
};
}
aps这个字典就是我们收到的推送内容,alert就是具体内容消息!
基本上推送就是这样实现的,时间紧迫,没有粘贴图片,也没有完整阐述玩推送所有内容,这只是简单地集成而已,后期我将继续完善!
有不对的地方请指正,我qq1060456561.
- iOS第三方集成之jpush极光推送
- Android开发之第三方推送JPush极光推送知识点详解 学会集成第三方SDK推送
- iOS JPush极光推送
- 【android】第三方集成之——极光推送
- jpush(极光)推送之 IOS 篇
- Android第三方推送(基于JPush极光)
- 极光推送(JPush)集成
- Android 集成极光推送的第三方
- iOS极光推送 --> JPush步骤
- 第三方--极光推送
- 极光推送JPush------目前用的最爽的第三方推送平台
- 第三方推送-极光推送
- ionic应用集成极光推送插件jpush
- android jpush(极光推送)快速集成
- Laravel 集成 JPush 极光推送指北
- 迅速集成Jpush极光推送功能
- Android JPush的集成 极光推送
- thinkphp3.2.3集成Jpush极光推送
- 小猪的Android入门之路 Day 8 part 2
- 图像变形与投影(Transformations and projections)
- Android UI组件进阶(2)——仿Windows对话框
- Android基础整合项目之节日群发助手(一)
- 低效程序员的7个坏习惯
- iOS第三方集成之jpush极光推送
- Android基础整合项目之节日群发助手(二)
- return关键词,break和continue
- shell命令之sed
- Android基础整合项目之节日群发助手(三)
- C++之学习记录1
- 点阵字库的显示原理
- 从HashMap到LruCache的源码分析
- 半夜来一发C语言gdbm数据库基本操作