机智云APP开源框架集成了百度推送与极光推送功能,只需修改部分代码即可快速使用。本文档就如何基于机智云APP开源框架快速集成消息推送功能,如需了解开源框架,请参考快速入门的文档。
点击链接https://www.jiguang.cn/app/form创建极光应用
如图,需要上传苹果开发者证书,包括开发证书和生产证书以及证书的密码。
登陆苹果开发者中心:https://developer.apple.com, 申请并下载cer证书,双击证书从钥匙串打开,选中证书,并选择《登陆》和《我的证书》,右击证书,导出P12证书。
点击《导出》会弹出以下弹框,设置证书名称及存储路径
点击存储,弹出密码输入框,设置证书密码
成功导入证书如下图,会显示《已验证》
至此极光应用已经创建完成,应用生成的AppKey和Master Secret也可以正常使用
开通D3 Engine需要机智云审核通过,点击开通服务后需要联系机智云FAE协助审核开通。
通过审核后,可以在服务一栏看到D3 Engine,依次点击“配置”->” 编辑推送平台”
将从极光申请到的应用App Key和 Master Secret填写到下图,并选择测试环境。
注意:选择证书类型为《开发》时,只有在开发环境APP才能收到推送消息
点击项目列表->新建项目,下面将演示创建一个设备上线后给APP推送消息的规则。
拖动“设备数据”框到右边空白处,并双击该栏目。
将触发方式设为“设备上线”,点击确定。
双击“APP推送”,并设置推送的内容。
填写jpush_app_key,以及将push_type设为1,表示选择极光推送,并且填写绑定了该极光应用的机智云应用于app_id、app_secret、product_key的值中。
打开项目,选择Targets –> Capabilities,开启Push Notifications的按钮,即开启了项目的远程推送功能。
开启推送按钮后,会自动生成一个.entitlements文件,如下,其中的红框中的值表示推送环境,development表示开发环境,distribution表示生产环境。设置值为development时推送只在开发环境生效,distribution时推送只在生产环境生效。
通过以上步骤,该APP已具备了极光推送功能,部署到手机上后,申请帐号并登录,通过扫码即可绑定云端的虚拟设备。
关闭虚拟设备后,再次开启,即可看到手机收到了推送消息。
D3引擎支持向每条规则设置特定的推送声音,主要需要做两个地方的修改。
打开某条推送规则如下:
选择APP推送方块(上图红框部分):
点击《显示json样例》:
Example的具体内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21{
"baidu": {
"aps": {
"badge": 0,
"sound": "default"
},
"notification_builder_id": 0,
"notification_basic_style": 0
},
"jiguang": {
"ios": {
"sound": "sound.caf",
"badge": 1
},
"android": {
"builder_id": 0,
"alert_type": 1,
"style": 1
}
}
}
这里做的是iOS的极光推送,假如推送声音名称为《pushMusic.caf》,则高级参数需要填写的内容如下:1
2
3
4
5
6
7
8{
"jiguang": {
"ios": {
"sound": "pushMusic.caf",
"badge": 1
}
}
}
具体如图:
点击《确定》保存设置即完成推送声音的设置
注意:”badge”这个参数是设置推送后APP显示的角标内容,当设置为1时,APP收到推送显示的角标为1,不过按照正常的逻辑应该是APP收到多条推送会自动累加角标数,如果这里填1,那不管推送多少条通知,角标一直都为1。
如果要角标根据消息数量累加,即把”badge”: 1去掉即可,没有设置的话,极光会默认做累加操作。
当在D3成功设置自定义推送声音之后,每当有推送消息推到APP中,系统会先去APP中查找是否有相关名称的声音文件,有:则播放该声音,没有:则播放系统默认的声音。
推送声音的音频格式包括aiff,wav,caf 文件,并且播放时间必须在30s内,文件也必须放到 app 的 mainBundle 目录中,有其中一个条件不满足,系统都会播放默认通知声音来替代。
添加音频文件到项目如下:
至此自定义推送声音设置结束,推送相关消息APP将播放设置的音频。
进入百度云推送平台:http://push.baidu.com,创建应用并配置证书
如上图,需要上传苹果pem格式的开发证书和生产证书。
申请cer证书并导出p12的过程见《快速集成极光推送》的1.2部分,下图示范如何从p12证书导出pem证书
进入《终端》,输入如下命令即可导出pem证书。
1 | openssl pkcs12 -in <p12证书名称> -out <pem证书名称> -nodes |
上传pem证书到《1.1 创建百度应用》所示图中,上传证书成功,会显示《已验证》,并且生成百度推送的API KEY 和 SECRET KEY。
该步骤可参考《快速集成极光推送》的2.1部分
将从百度云推送平台申请到的应用API Key和Secret Key填写到下图,并选择测试环境。
注意:选择证书类型为《开发》时,只有在开发环境APP才能收到推送消息
该步骤可参考《快速集成极光推送》的2.3部分
填写bpush_app_key,修改push_type为2,表示选择百度推送, 并且填写绑定了该百度应用的机智云应用于app_id、app_secret、product_key的值中。
注意:这里也需要设置XCode推送,详情看《快速集成极光推送》的《4 XCode配置推送》
百度推送的启动接口有一个pushMode参数,分别有两个值BPushModeDevelopment 和 BPushModeProduction。
BPushModeDevelopment:设置百度推送环境为开发环境
当设置的环境与当前APP的运行环境相符合是,推送才会生效。
该步骤可参考《快速集成极光推送》的第5部分
通过以上步骤,该APP已具备了百度推送功能,部署到手机上后,申请帐号并登录,通过扫码即可绑定云端的虚拟设备。
关闭虚拟设备后,再次开启,即可看到手机收到了推送消息。
进入到推送声音设置界面如下,如何进入请参考极光的《极光自定义推送声音的8.1部分》
获取Example的具体内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21{
"baidu": {
"aps": {
"badge": 0,
"sound": "default"
},
"notification_builder_id": 0,
"notification_basic_style": 0
},
"jiguang": {
"ios": {
"sound": "sound.caf",
"badge": 1
},
"android": {
"builder_id": 0,
"alert_type": 1,
"style": 1
}
}
}
这里做的是iOS的百度推送,假如推送声音名称为《pushMusic.caf》,则高级参数需要填写的内容如下:1
2
3
4
5
6
7
8{
"baidu": {
"aps": {
"badge": 0,
"sound": "pushMusic.caf"
}
}
}
设置完成如下:
点击《确定》保存,即完成推送声音的设置
这部分请参考文档上方《极光自定义推送声音的8.2部分》
1、开发者一定要开通D3 Engine才能使用消息推送吗?
解答:是的,目前D3 Engine只针对于企业开发者用户。所以,只有企业开发者才能申请开通使用。
2、使用极光推送按照以上步骤完成代码修改,但是却无法收到推送消息。
解答:
步骤一:查看XCode的推送开关是否被开启,详情看《2.4 XCode配置推送》。
步骤二:查看项目的.entitlements文件的key值是否与当前的测试环境相符合
distribution表示生产环境,
development表示开发环境
步骤三:确定项目的BundleID是否与证书的Bundle ID一致
注意:若是百度推送,还需要确定启动百度推送方法所设置的pushMode是否与当前的测试环境一致,详情查看《快速集成百度推送》的《4 修改百度推送的启动接口》
如经过以上三个步骤,还是无法推送,则需要通过推送平台推送来确认问题
步骤四:登陆极光/百度平台的应用,测试一下直接从推送平台上推送通知是否能够到达APP。
推送平台单推不可以推的情况:
1)确定证书是否已经失效,考虑更换证书。
推送平台单推可以推的情况:
1) 确认在机智云D3 Engine设置的推送环境是否与当前测试环境一致,如下图的《证书类型》
2) 确认机智云应用绑定的推送APPID和Secret是否与APP中所使用的相对应,如下图
3) 若依然失败,则在如下图位置打断点,打印result的值,确定具体的错误码,根据错误码提示来确认问题并修正。
通常result有错,需要从下图所示代码来进一步确认。
3、极光推送如何设置角标的值
解答:[JPUSHService setBadge:0];