UniApp集成极光推送详细教程
最近项目要集成推送服务,选型极光推送,记录一下开发过程。
1、极光官网注册登录
1.1选择极光推送产品,新建应用
1.2在下一步中选择Android/IOS的消息推送服务
1.3产品设置中输入应用包名(一经输入后不可更改,一定要正确输入包名),选择想要集成的厂商推送通道,按照后续流程完成注册。
*注:包名要和hbuilder中打包的包名一致
1.4配置好后保存好AppKey、Master Secret,后续要用到。也可以在推送设置——集成设置中查看
2、在uniapp官方插件市场下载极光插件
极光推送 JPush 官方 SDK
极光推送 JCore 官方 SDK
流程参考如下,选择对应的应用,输入Android 包名和iOS 包名
3、Hbuilder项目中集成使用
3.1打开项目,在mainfest.json中选择安卓/IOS原生插件配置——选择云端插件,选择刚才下载的2个插件
3.2极光JCore配置如下,输入在极光平台申请的appkey
3.3JPush配置如下,首先需要去各个厂商通道申请应用,拿到应用的必要信息,例如小米就要去小米的开发者平台去注册申请,可以参考极光官方文档或者自行申请。红框处的参数配置一定要注意,按照示例格式填写参数前缀,否则推送不成功。
4、页面植入极光代码,这里我没有集成全部功能,只做了极光设备别名(Alias)推送和角标的处理,想要集成其他功能请移步官方文档自行查询。
4.1项目根目录下App.vue文件中引入极光服务
<script>// 极光推送 // #ifdef APP-PLUSconst jpushModule = uni.requireNativePlugin('JG-JPush');// 推送插件const badge_module = uni.requireNativePlugin('Laowu-BadgeModule');//#endifexport default {onLaunch() {// #ifdef APP-PLUS// 极光推送初始化jpushModule.initJPushService();//监听通知事件消息jpushModule.addConnectEventListener(result=>{let connectEnable = result.connectEnable})jpushModule.addNotificationListener(result=>{let notificationEventType = result.notificationEventTypelet messageID = result.messageIDlet title = result.titlelet content = result.content let extras = result.extrasif(notificationEventType=='notificationOpened'){if(extras.MSGID){uni.navigateTo({url: '/pages/noticeDetail?id='+extras.MSGID})}} })this.getNotificationEnabled();// #endif},onShow: function() {},onHide: function() {},methods: {// 处理通知权限getNotificationEnabled() {if (uni.getSystemInfoSync().platform == 'ios') {jpushModule.requestNotificationAuthorization((result) => {let status = result.status;if (status < 2) {this.noticMsgTool();}});} else {jpushModule.isNotificationEnabled((result) => {// console.log('判断android是否打开权限1:true,0:false', result);if (result.code == 0) {//如果为0则表示 未打开通知权限this.noticMsgTool();}});}},noticMsgTool() {if (uni.getSystemInfoSync().platform == 'ios') {//苹果打开对应的通知栏uni.showModal({title: '通知权限开启提醒',content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',showCancel: false,confirmText: '去设置',success: function(res) {if (res.confirm) {var app = plus.ios.invoke('UIApplication', 'sharedApplication');var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');plus.ios.invoke(app, 'openURL:', setting);plus.ios.deleteObject(setting);plus.ios.deleteObject(app);}}});} else {//android打开对应的通知栏var main = plus.android.runtimeMainActivity();var pkName = main.getPackageName();var uid = main.getApplicationInfo().plusGetAttribute('uid');uni.showModal({title: '通知权限开启提醒',content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',showCancel: false,confirmText: '去设置',success: function(res) {if (res.confirm) {var Intent = plus.android.importClass('android.content.Intent');var Build = plus.android.importClass('android.os.Build');//android 8.0引导if (Build.VERSION.SDK_INT >= 26) {var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);} else if (Build.VERSION.SDK_INT >= 21) {//android 5.0-7.0var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');intent.putExtra('app_package', pkName);intent.putExtra('app_uid', uid);} else {//(<21)其他--跳转到该应用管理的详情页intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);var uri = Uri.fromParts('package', mainActivity.getPackageName(), null);intent.setData(uri);}// 跳转到该应用的系统通知设置页main.startActivity(intent);}}});}}},}
</script>
4.2在登录页中注册极光ID,也可以写在4.1中,看自己的业务需求
// 获取极光推送ID 并绑定到登录用户,usetInfo是自己系统的登录用户信息getRegistrationID(usetInfo) {if (!jpushModule || !jpushModule.getRegistrationID) {return}try {jpushModule.getRegistrationID((result) => {if (usetInfo.RId !== result.registerID) {jpushModule.setAlias({alias: usetInfo.Id.split('-').join(''),sequence: 1})BindJiGuang({UserId: usetInfo.Id,RId: result.registerID}).then((res) => {uni.setStorageSync('registerID', result.registerID); //缓存账户})}});} catch (err) {}},
4.3在用户登出的时候处理推送别名信息(*注:根据自己业务需要选择要不要删除极光推送)
// #ifdef APP-PLUS// 删除极光推送别名信息const registerID = uni.getStorageSync('registerID')if (registerID) {jpushModule.deleteAlias({sequence: 1})LogoutBindJiGuang({RId: registerID,UserId: UserInfo.Id})uni.removeStorage({key: "registerID"});}// #endif
5、打包自定义基座调试
5.1hbulider工具中选择菜单:“发行——App-Android/IOS-云打包”,选择打自定义调试基座、传统打包
5.2打包自定义基座成功后,选择菜单“运行——运行到手机或模拟器——运行基座选择——自定义调试基座”后再次运行项目,即可通过自定义调试基座查看日志。
6、苹果推送注意事项:
6.1在苹果开发者上要注册一个推送的证书,如下图,创建时选择如图2
6.2在Devices中添加你的测试设备(自定义调试基座调试用),重新生成.p12证书和描述文件。详细操作请参考:uniapp 发布苹果IOS详细流程,包括苹果开发者公司账号申请、IOS证书、.p12证书文件等
6.3、在极光推送中配置苹果推送鉴权方式和证书,具体流程如下:
登陆极光推送管理后台——推送设置——集成设置——IOS,选择鉴权方式:iOS证书配置,填写包名并上传.p12证书
7、推送测试
7.1 登陆极光推送管理后台——推送管理——创建推送——通知消息,
效果如下:
7.2在极光推送管理后台——推送管理——推送历史——推送记录中查看成功率