当前位置: 首页 > news >正文

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在极光推送管理后台——推送管理——推送历史——推送记录中查看成功率


http://www.mrgr.cn/news/96891.html

相关文章:

  • Python实现 MCP 客户端调用(高德地图 MCP 服务)查询天气工具示例
  • Laravel 中使用 JWT 作用户登录,身份认证
  • 【硬件视界9】网络硬件入门:从网卡到路由器
  • IO 端口与 IO 内存
  • Description of STM32F1xx HAL drivers用户手册
  • Mysql的安装
  • ControlNet-Tile详解
  • 3D意识(3D Awareness)浅析
  • Scala相关知识学习总结3
  • Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)
  • 【Linux】内核驱动学习笔记(二)
  • L2-001 紧急救援
  • Java基础 4.2
  • 大智慧前端面试题及参考答案
  • Shiro学习(三):shiro整合springboot
  • 【微知】ARM CPU是如何获取某个进程的页表的?(通过TTBR寄存器,MMU进行处理)
  • C++封装、继承、多态(虚函数)
  • 表面法线估计(Surface Normal Estimation)
  • 【JavaSE】String 类
  • AI:机器学习模型-线性回归