昨天收到领导提出的需求,要集成阿里云推送(原因是收费便宜<小声BB>), 以前都是用的极光,感觉推送很简单呀,就开始做了,然而过程却没有我想的简单,下面就是我集成的步骤和遇到的报错:
第一步:推送证书的配置
不管用哪个推送平台都要进行的步骤,阿里云官方文档介绍的很详细了
iOS推送证书设置_iOS SDK手册_终端SDK手册_开发指南_移动推送-阿里云
对着步骤一步步生成推送证书的.P12文件上传到阿里云,并配置boudleId
图1
第二步:下载SDK
在阿里云官网下载SDK如下图做好准备工作。
图2第三步:集成阿里云推送的过程
1.UTDID冲突的解决
因为之前集成了支付宝SDK,阿里云官网有支付宝SDK和阿里云推送的UTDID冲突预警,跟着官方文档步骤,去到下面的网址下载剥离了UTDID的支付宝开放平台文档中心,把之前的alipay删除,添加新的alipaySDK
图3报错如下图:这是一个坑点
图4 问题来了,之前跑的好好的支付宝换个咋就出了问题 ?一顿试探之后找到了问题所在----添加依赖库:libresolv.9.tbd
不报错了,测试支付宝功能正常后,再导入阿里云推送SDK。
2.把下载的阿里云推送的四个framework拖进项目中
图6注意要点copy items if needed
3.添加依赖库
libz.tbd
libresolv.tbd
CoreTelephony.framework
SystemConfiguration.framework
libsqlite3.tbd
不报错了,集成完成
第四步:应用SDK并推送测试
1.在appdelegate.m中导入头文件
#import <CloudPushSDK/CloudPushSDK.h>
2.按照官网在appdelegate.m粘贴代码
把iOS SDK配置_iOS SDK手册_终端SDK手册_开发指南_移动推送-阿里云 最下面的代码全复制好,注意(图7)的APPID和密文要和控制台(图8)的一致
图7 图83.然后在didFinishLaunchingWithOptions中调用上面的方法:
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
[self initCloudPush];
[self registerAPNS:application];
[CloudPushSDK sendNotificationAck:launchOptions];
[self registerMessageReceive];
return YES;
}
4.别忘了打开APP的推送开关
在TARGETS - Capabilities里打开如图9
图95.发送第一条提送消息
图10来到控制台(图10),需要deviceToken才能测试推送,那么我们就需要拿到deviceToken的字符串类型,但是默认是NSData类型,修改获取deviceToken成功的回调方法中的代码如下图11:
复制打印出的deviceToken到阿里云推送控制台(图10)中;点击测试推送;推送成功!
图12
网友评论