天天看点

iOS: 极光推送

之前做过环信和友盟的推送,照着官方文档集成其实挺简单的,今天公司需要,特地做了一下极光推送。不用不知道,原来极光推送集成如此简单,不得不说说了。

当然做推送钱需要做一些准备工作了,就是推送必须的p12推送证书:开发环境(开发时测试需要的推送证书)、生产环境(发布到AppStore时需要的推送证书),因为xcode已经升级到了7.0以上,所以一些真机测试的配置文件证书就不需要自己手动去创建了,只要有Apple ID,真机测试时,就能自动生成,免费测试:

制作证书的过程就不啰嗦了,详细看官方文档或者如下推荐:

<a href="http://jingyan.baidu.com/article/c1465413975cba0bfcfc4ccf.html" target="_blank">http://jingyan.baidu.com/article/c1465413975cba0bfcfc4ccf.html</a>

<a href="http://docs.jpush.io/client/ios_tutorials/#ios_1" target="_blank">http://docs.jpush.io/client/ios_tutorials/#ios_1</a>

<a href="http://docs.jpush.io/guideline/ios_guide/" target="_blank">http://docs.jpush.io/guideline/ios_guide/</a>

<a href="http://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao28?utm_source=tuicool&amp;utm_medium=referral" target="_blank">http://allluckly.cn/投稿/tuogao28?utm_source=tuicool&amp;utm_medium=referral</a>

创建完证书,就是去极光官网注册账号,创建应用,截图如下:

iOS: 极光推送

将创建的证书上传到应用上了,上传成功后的截图如下:

iOS: 极光推送

证书上传成功后,生成APP Key,截图如下:

iOS: 极光推送

好了,这下工作做完了,剩下的就是代码实现了:

第一步:下载SDK,将需要的两个文件导入项目中:

iOS: 极光推送

包名为JPush-iOS-SDK-{版本号}

lib文件夹:包含头文件 JPUSHService.h,静态库文件jpush-ios-x.x.x.a ,支持的iOS版本为 5.0 及以上版本。(请注意:模拟器不支持APNs)

pdf文件:集成指南

demo文件夹:示例

第二步:导入需要依赖的库文件:

CFNetwork.framework

CoreFoundation.framework

CoreTelephony.framework

SystemConfiguration.framework

CoreGraphics.framework

Foundation.framework

UIKit.framework

Security.framework

Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib

Adsupport.framework (获取IDFA需要;如果不使用IDFA,请不要添加)

第三步:创建一个工具类,名称为KJJPushHelper,封装注册时的各种方法

.h

iOS: 极光推送
iOS: 极光推送

.m

iOS: 极光推送
iOS: 极光推送

第四步:创建一个APPDelegate的分类,在该类中调用KJJPushHelper中的类方法

iOS: 极光推送
iOS: 极光推送

第五步:在AppDelegate中注册即可

好了,大功告成,插上真机运行:打印结果如下

iOS: 极光推送

去官网测试一下:

iOS: 极光推送

真机收到消息截图:

iOS: 极光推送

集成过程中遇到的问题,困扰了好久,后来找出来了,分享一下:

当时证书一切都没有问题,但是总是出现这个打印:

错误信息JPUSH | W - [JPUSHClientController] Not get deviceToken yet. Maybe: your certificate not configured APNs? or current network is not so good so APNs registration failed? or there is no APNs register code? Please refer to JPush docs.

推送消息时,出现的提示:

iOS: 极光推送

我的原因是:

由于项目之前用到了环信SDK,环信得已经注册了通知,在AppDelegate中注册通知,didRegisterForRemoteNotificationsWithDeviceToken与didFailToRegisterForRemoteNotificationsWithError方法,均不执行。。。需到环信注册通知的地方,再次注册极光通知。方可以获取到Token执行。

扩展:极光推送中的定向推送

极光推送中,不使用广播推送,那么怎样做到定向推送,是开发者和需求一定会出现的问题,极光推送中可以有两个唯一值:

(1)注册Jpush成功后生成的registrationID,这个registrationID是标记设备唯一性的,你发现,当你在启动多次,注册Jpush时,这个值是不变的;在同一个设备上,更换用户登录,这个值仍然不变;最后,你删除应用程序,再下载时启动注册Jpush,这个值还是不变。这就可以定向向某台设备做推送,如果你能给自己的服务器上传这个值,并且给这个值绑定一些东西,是不是可以做更多事情呢。

(2)alias:只要了解极光推送的都知道这是设置别名的,官方文档上说明了这个值不是唯一的,但是建议开发者把它作为用户的唯一标记。我觉得这个作为唯一值是最好的,当你想定向向某个用户做推送,或者召唤他回归我们的应用程序,这个值就太好了。你可以将它设置为userId,这个时候推送就能知道向哪个用户发了。

本人原创,转载须注明出处,谢谢!

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5463802.html,如需转载请自行联系原作者