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极光推送相关推荐

  1. Laravel 集成 JPush 极光推送指北

    2019独角兽企业重金招聘Python工程师标准>>> 我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就 ...

  2. php集成jpush教程,Laravel 集成 JPush 极光推送指北

    我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就不用看了). Laravel 使用 Composer 来管理代码依赖.所以 ...

  3. JPush极光推送Java服务器端API

    菜鸟的春天 JPush极光推送Java服务器端API // 对android和ios设备发送 JPushClient jpush = new JPushClient(masterSecret, app ...

  4. 解决Android Studio配置JPush极光推送错误方案

    1.在JPush极光推送官方下载 JPush SDK(jpush-android-release-2.1.7.zip) 2.解压下载好的压缩包解压并复制libs/jpush-android-2.1.7 ...

  5. Android Jpush极光推送

    平时我们开发手机客户端总是少不了与服务器进行交流,那当我们服务器数据有更新时候,客户端是怎么知道的呢,我们以前一般用两种方法: 1,客户端每隔一段时间向服务器发请求,检测数据是否发生变化,当发生变化的 ...

  6. Android开发之第三方推送JPush极光推送知识点详解 学会集成第三方SDK推送

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 下面是一些知识点介绍,后期将会带领大家进行代码实战: 一.Android实现推送方式解决方案: 1.推 ...

  7. ionic集成jPush极光推送

    一.简介: 极光推送(JPush)是独立的第三方云推送平台,致力于为全球移动应用开发者提供专业.高效的移动消息推送服务. 极光推送,英文简称 JPush,是一个面向普通开发者开放的,免费的第三方消息推 ...

  8. 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)

    这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...

  9. C# Jpush 极光推送消息推送

    简介 消息推送(Push)指运营人员通过自己的产品或第三方工具对用户移动设备进行的主动消息推送.用户可以在移动设备锁定屏幕和通知栏看到push消息通知,通知栏点击可唤起APP并去往相应页面.我们平时在 ...

最新文章

  1. 小型职工工作量c语言,计算机c语言职工工作量统计系统.doc
  2. 最新!2022中国大学排名发布!
  3. linux sort 时间排序,linux sort多字段排序实例解析
  4. bzoj2208 [Jsoi2010]连通数
  5. 【leetcode困难】968. 监控二叉树
  6. 蓝牙鼠标windows linux,Ubuntu下使用蓝牙无线鼠标[图]
  7. Windows下配置OpenSSL(傻瓜式教程,一看就会)
  8. 今天学得有点多——end用法
  9. eclipse安装M2Eclipse插件
  10. 基于MATLAB的人脸识别
  11. 树莓派初始用户名和密码
  12. 【彻底学会】多级编号
  13. 京东物流数据安全体系
  14. python怎么退出窗口_关闭pyplot窗口
  15. word制作表格详细教程
  16. 在python中正确的赋值语句为3y=x+1-在 Python 中,正确的赋值语句为 ( ) 。_学小易找答案...
  17. Android连连看游戏
  18. linux右键没有创建新文件夹,将新建文档添加回Ubuntu 18.04中的右键菜单
  19. 大厂程序员能力修炼手册,从筑基到化神要多久?
  20. SQL Server 2008+ 性能调优

热门文章

  1. PHP gd库 生成海报
  2. 择新境·领锋芒 | 创利树项目发布会暨公司乔迁庆典圆满成功!
  3. 关于 fscanf_s 的 bug
  4. openwrt配置动态挂载sd卡(二) -- openwrt默认配置挂载sd卡
  5. KDE-PIM(KDE小我信息对象)先容
  6. pyzbar+uiautomation(实现扫码进入微信大学习)
  7. 研发提效还在死磕敏捷开发?他们都在用新工具了
  8. 牛叉的装饰器,带参数语法糖
  9. Ce6-Hydrazide 二氢卟吩-酰基 Ce6-PEG-Hydrazide
  10. 新国立/港大博士招生信息