集成iOS友盟消息推送主要分为两步:1.iOS推送证书配置;2.U-PushSDK集成与配置。
写在前面
1.假设你使用过Apple设备(iMac/iPad/iPhone)且注册过Apple ID(Apple Account)。
2.假设你或你所在的开发组已加入苹果开发者计划(Enroll in iOS Developer Program to become amember),即已注册开发者账号(Apple Developer Account)。
3.若要真机调试实践,你必须至少拥有一台装有Mac OS X/Xcode的Mac开发机(iMac or MacBook),其上自带原生的Keychain Access。
一.iOS推送证书配置
作为一个小白,在配置ios推送证书之前我们需要知道,证书是什么以及我们为什么要配置?
iOS证书是用来证明iOS App内容(executable code)的合法性和完整性的数字证书。对于想安装到真机或发布到AppStore的应用程序(App),只有经过签名验证(Signature Validated)才能确保来源可信,并且保证App内容是完整、未经篡改的。
iOS证书分为两类:Development和Production(Distribution)。
1)Developer Certification(开发证书)
安装在电脑上提供权限:开发人员通过设备进行真机测试。可以生成副本供多台电脑安装;
2)Distribution Certification(发布证书)
安装在电脑上提供发布iOS程序的权限:开发人员可以制做测试版和发布版的程序。不可生成副本,仅有配置该证书的电脑才可使用。
Provisioning Profile(授权文件)
1)Developer Provisioning Profile(开发授权文件)
在装有开发证书或副本的电脑上使用,开发人员选择该授权文件通过电脑将程序安装到授权文件记录的设备中,即可进行真机测试。
注意:确保电脑有权限真机调试,即安装了开发证书或副本;在开发工具中程序的Bundle identifier和选中使用的授权文件的App Id要一致;连接调试的设备的UDID在选中的授权文件中有记录。
2)Distribution Provisioning Profile(发布授权文件)
在装有发布证书的电脑上(即配置证书的电脑,只有一台)制做测试版和发布版的程序。发布版就是发布到App Store上的程序文件,开发者帐号创建授权文件时选择store选项,选择App Id,无需选择UDID;测试版就是在发布之前交给测试人员可同步到设备上的程序文件,开发者帐号创建授权文件时选择AdHoc,选择App Id和UDID;只有选中的UDID对应的设备才可能安装上通过该授权文件制做的程序。
Keychain(开发秘钥)
安装证书成功的情况下证书下都会生成Keychain,上面提到的证书副本(导出证书重新命名)就是通过配置证书的电脑导出Keychain(就是.p12文件)安装到其他机子上,让其他机子得到证书对应的权限。Developer Certification就可以制做副本Keychain分发到其他电脑上安装,使其可以进行真机测试。注意:Distribution Certification只有配置证书的电脑才可使用,因此即使导出导出Keychain安装到其他电脑上,其他电脑也不可能具有证书的权限。
废话不多说,开始走流程。参考文档:友盟iOS证书配置指南
说明:使用消息推送功能前,需要严格按照此文档配置相关证书。否则将会影响消息推送组件的正常使用。
1.1 创建APP ID
登录Apple Member Center :https://developer.apple.com/membercenter,选择certificates,identifiers&profiles选项,如下图所示:
选择identity中的APP IDs,如下图所示:
注意:创建Explicit App ID时,要注意此时设置的Bundle ID要与APP中的的Bundle ID一致,如下图所示:
选择Push Notification来开通Push功能,如下图所示:
点击下方的register按钮,几秒钟之后下方会变成一个Done,表示APP ID已经创建完成,如下图所示:
注意:创建的APP ID要与自己项目的Bundle ID保持一致。如果已经有APP ID,请确保自己的APP ID已经开通了Push功能,如果没有开通,可以点击APP ID,在其底部有一个Edit按钮,点击后选中Push服务并创建,如下图所示:
至此,APP ID创建完毕。
1.2 创建并配置CSR文件
CSR是Cerificate Signing Request的英文缩写,即证书请求文件。证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件。证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。
在你的Mac中找到钥匙串——->钥匙串访问———>证书管理———>从证书颁发机构请求证书,如下图所示:
设置完证书信息后,点击“继续”,然后选择存储位置,点击存储,至此,CSR文件创建成功。
1.3 创建并配置开发调试证书
如果你已经有开发调试证书,请继续进行下一步的设置。
选择Development(如果是发布上线,需要选择Distribution),如下图所示:
接下来,我们选择iOS App Development证书,如下图所示:
在choose file…中选择本地的CertificateSigningRequest(CSR)文件,然后点击继续,如下图所示:
点击Download,将证书下载到本地,双击下载的开发调试证书(文件名为:iOS_development.cer),双击完会打开钥匙串应用程序,就可以在钥匙串访问中的我的证书中找到。至此,开发调试证书设置完毕。
1.4 添加测试设备
首先需要获取需要测试设备的设备UDID:将测试设备连接iTunes即可查看UDID:
测试推送需要添加测试设备(就是存储需要测试设备的名称和设备UDID),添加方法如下所示:
1.5 创建并配置Provisioning Profiles
选择Development,创建开发环境的Provisioning Profiles(如果是发布上线,需要选择Distribution),如下图所示:
创建新的Provisioning Profiles,并选择之前生成好的App ID。如下图所示:
选中证书:
选中测试设备:
把创建的Provisioning Profiles,调试证书,推送证书下载下来(文件名:umengpushtestdemo.mobileprovision)以后双击证书。
创建并配置推送证书(开发环境&生产环境)
选择Apple Push Notification service SSL(Sandbox)
注意:推送证书分为开发环境和生产环境,如果需要生成生产环境的推送证书请选择:Apple Push Notification service SSL (Sandbox&Production),如下图所示:
选中APP ID后,点击continue,直到上传CRS文件,如下图所示:
点击Download,将证书下载到本地后,双击下载的开发环境推送证书(文件名为:aps_development.cer),就可以在钥匙串访问中的我的证书中找到。
1.6 导出推送证书的P12文件
注意:在钥匙串访问(KeyChain)的我的证书中选择刚刚导入的证书,选择导出,注意不要选中私钥,并设置相应密码即可。
注意:此步骤所设置的密码将在之后在U-Push后台上传推送证书时所使用,且密码只能包含大小写(a-z,A-Z ),数字(0-9),特殊字符(.-_),其他元素将会被过滤。
生产环境的推送证书也是以同样的方式导出。
至此,P12证书导出完毕。
1.7 在U-Push后台上传P12推送证书(U-Push后台传送门)
点击右上角“新建应用”:
然后以同样的上述方式,配置成产的证书,并导出p12文件设置密码,上传到umeng官网后台的生产证书项里。
二.U-PushSDK集成与配置
下面我们选用手动集成的方式进行U-PushSDK的集成:
参考文档:U-PushSDK友盟集成文档
2.1 下载iOS端的SDK(由于本人目前的项目是基于Cordova的WebApp所以选择下载PhoneGap版的SDK)
2.2 组件化基础库UMCommon集成
组件化基础库UMCommon集成,请查看文档 组件化Common集成文档
需要添加的依赖库:
1.UMCommon.framework;(将下载的SDK解压,复制该组件库到项目的相应目录中)
2.UMPush.framework;(将下载的SDK解压,复制该组件库到项目的相应目录中)
3.CoreTelephony.framework 获取运营商标识;
4.libz.tbd 数据压缩;
5.libsqlite.tbd 数据缓存;
6.SystemConfiguration.framework 判断网络状态
如果是基于cordova的webApp还需要添加桥接文件(XXXX.Module.h,XXXX.Module.m)
操作流程如下:
1.选择SDK功能组件并下载,解压.zip文件得到相应组件包(例如:UMCommon.framework, UMPush.framework这来个库必须添加进来)。
XcodeFile —> Add Files to "Your Project",在弹出Panel选中所下载组件包->Add。(注:选中“Copy items if needed”)
添加依赖库,在项目设置target -> 选项卡General ->Linked Frameworks and Libraries 如下以及效果:
如果是webapp还需要引入桥接文件
2.3 U-Push基础功能
2.3.1 打开推送开关
2.3.2 打开后台推送权限设置
接下来我们就需要进行代码的初始化了↓↓↓↓↓↓↓↓↓↓↓↓↓
进入到AppDelegate.m
具体代码:U-Push友盟集成文档
运行项目,可以在控制台中看到deviceToken,复制deviceToken,添加到U-Push后台测试设备中
之后就可以发送推送测试消息了。
至此iOS集成友盟消息推送的过程大致实现,更多U-Push高级功能或疑问请参考友盟的U-Push集成文档