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

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

相关文章:

UniApp集成极光推送详细教程

最近项目要集成推送服务&#xff0c;选型极光推送&#xff0c;记录一下开发过程。 1、极光官网注册登录 1.1选择极光推送产品&#xff0c;新建应用 1.2在下一步中选择Android/IOS的消息推送服务 1.3产品设置中输入应用包名&#xff08;一经输入后不可更改&#xff0c;一定要正…...

探索Doris:日志分析的新宠,是否能取代老牌ES?

在大数据时代&#xff0c;日志存储与分析对于企业的运营和决策起着至关重要的作用。Elasticsearch&#xff08;简称 ES&#xff09;作为一款广泛应用的开源分布式搜索和分析引擎&#xff0c;长期以来在日志管理领域占据着举足轻重的地位。然而&#xff0c;随着技术的不断发展&a…...

HCIA/HCIP基础知识笔记汇总

HCIA/HCIP基础知识笔记汇总 ICT产业链&#xff1a; 上游&#xff1a;芯片制造、元器件生产、光纤光缆制造 中游&#xff1a;硬件组装、软件开发、网络建设维护 下游&#xff1a;电信服务、互联网服务、终端产品 VLAN端口类型&#xff1a; access &#xff1a;…...

AI战略群与星际之门:软银AI投资版图计划深度解析

一、星际之门:万亿美元级 AI 基础设施革命 1.1 项目背景与战略定位 在 AI 技术迅猛发展的今天,算力已成为推动其前进的核心动力。软银联合 OpenAI、甲骨文、英伟达、微软、arm推出的 “星际之门”(Stargate)计划,无疑是 AI 领域的一颗重磅炸弹。作为 AI 领域史上最大单笔…...

系统思考与时间管理

时间管理的真正秘诀&#xff1a;主动浪费时间&#xff1f; 巴菲特的私人飞机驾驶员觉得自己不够成功&#xff0c;于是向巴菲特请教应该怎么做。巴菲特让他列出了自己人生中最想实现的25个目标&#xff0c;并按重要程度排序&#xff0c;接着安排时间专注做前五件最重要的事情。…...

mac air m系列arm架构芯片安装虚拟机 UTM+debian 浏览器firefox和chrome

成果展示&#xff1a;debian虚拟机&#xff0c;你值得拥有&#xff01; 预期结果 1、mac的m系列芯片&#xff0c;arm 架构且内存小&#xff0c;安装虚拟机。 考虑到mac m系列芯片8g内存&#xff0c;arm架构想安装一个轻量的虚拟机&#xff0c;偶然之间发现了debian&#xff0c…...

大模预测法洛四联症的全方位研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、法洛四联症概述 2.1 病理特征 2.2 临床表现 2.3 现有治疗手段 三、大模预测法洛四联症的原理与模型构建 3.1 大模预测基本原理 3.2 模型构建的数据收集与处理 3.3 模型训练与优化 四、术前风险预测与准…...

Keepalived+LVS+nginx高可用架构

注明&#xff1a;所有软件已经下载好&#xff0c;防火墙和SELinux已经全部关闭 一.搭建NFS 1.服务端 1.创建文件 [rootnfs ~]# mkdir -p /nfs/data 2、修改权限 [rootnfs ~]# chmod orw /nfs/data 3、写配置文件 [rootnfs ~]# cat /etc/exports /nfs/data 192.168.111.118(r…...

【力扣hot100题】(034)LRU缓存

做完这题已经没有任何力气写链表题了。 思路很简单&#xff0c;就是调试特别的痛苦。 老是频频报错&#xff0c;唉。 class LRUCache { public:struct ListNode{int key,val;ListNode* next; ListNode* prev;ListNode() : key(0), val(0), next(nullptr), prev(nullptr) {}L…...

【redis】缓存 更新策略(定期、实时生存),缓存预热、穿透、雪崩、击穿详解

什么是缓存 redis 最常用的场景 核心思路就是把一些常用的数据&#xff0c;放到触手可及&#xff08;访问速度更快&#xff09;的地方 ⽐如我需要去⾼铁站坐⾼铁. 我们知道坐⾼铁是需要反复刷⾝份证的 (进⼊⾼铁站, 检票, 上⻋,乘⻋过程中, 出站…)正常来说, 我的⾝份证是放在…...

好文和技术网站记录

后续不断记录一些本人觉得的好文和一些技术网站 技术网站 Java 全栈知识体系 https://www.pdai.tech/ 文章 利用 NginxKeepalived 实现高可用技术 https://cloud.tencent.com/developer/article/1647182?policyId1004...

使用STM32CubeMX和Keil在STM32上创建并运行一个简单的FreeRTOS多任务程序

目标 利用FreeRTOS运行两个任务&#xff0c;分别为点灯和OLED屏的显示。 利用STM32CubeMX生成Keil工程和相关初始化代码 知识回顾 之前已经利用STM32CubeMX生成过Keil工程和相关初始化代码了&#xff0c;可以去回顾一下&#xff0c;详情见&#xff1a;https://blog.csdn.ne…...

从查重报告入手的精准论文降重秘籍

每个同学在使用论文查重时&#xff0c;为何同一篇文章&#xff0c;可能重复率从10%—30%不等&#xff1f;归根结底还是使用了不同查重系统。其实不同的论文查重与论文AIGC检测系统的算法、数据及模型都不一样&#xff0c;那如何针对这些系统的“个性”精准降重&#xff0c;这篇…...

车辆控制解决方案

车辆控制解决方案 /* * Purpose: 优化车辆控制的功能 -> 用户在控制车辆状态时&#xff0c;实现控制按钮点击状态改变只触发一次onSwitchChange事件&#xff0c;不再下发控制指令&#xff0c;同时清除加载车辆实时状态的定时器status_interval直到有返回值再开启&#xff0…...

【机器学习】嘿马机器学习(算法篇)第14篇:决策树算法,学习目标【附代码文档】

本教程的知识点为&#xff1a;机器学习算法定位、 K-近邻算法 1.4 k值的选择 1 K值选择说明 1.6 案例&#xff1a;鸢尾花种类预测--数据集介绍 1 案例&#xff1a;鸢尾花种类预测 1.8 案例&#xff1a;鸢尾花种类预测—流程实现 1 再识K-近邻算法API 1.11 案例2&#xff1a;预测…...

Uubuntu20.04复现SA-ConvONet步骤

项目地址&#xff1a; tangjiapeng/SA-ConvONet: ICCV2021 Oral SA-ConvONet: Sign-Agnostic Optimization of Convolutional Occupancy Networks 安装步骤&#xff1a; 一、系统更新 检查系统是否已经更新到最新版本&#xff1a; sudo apt-get update sudo apt-get upgra…...

设计模式 三、结构型设计模式

一、代理模式 代理设计模式&#xff08;Proxy Design Pattern&#xff09;是一种结构型设计模式&#xff0c;它为其他对象提供了一个代理&#xff0c;以控制对这个对象的访问。 代理模式可以用于实现懒加载、安全访问控制、日志记录等功能。简单来说&#xff0c;代理模式 就是通…...

C语言函数实战指南:从零到一掌握函数设计与10+案例解析(附源码)

一、函数基础:程序的“积木块” (一)什么是函数? 函数是可重复使用的代码块,用于实现特定功能。如同乐高积木,通过组合不同函数,可快速构建复杂程序。例如: #include <stdio.h>// 函数定义:计算两数之和 int add(int a, int b) {return a + b; }int main() {…...

Prompt攻击是什么

什么是Prompt攻击 Prompt攻击(Prompt Injection/Attack) 是指通过精心构造的输入提示(Prompt),诱导大语言模型(LLM)突破预设安全限制、泄露敏感信息或执行恶意操作的攻击行为。其本质是利用模型对自然语言的理解漏洞,通过语义欺骗绕过防护机制。 Prompt攻击的精髓:学…...

【Linux网络#18】:深入理解select多路转接:传统I/O复用的基石

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 目录 一、前言&#xff1a;&#x1f525; I/O 多路转接 为什么需要I/O多路转接&#xff1f; 二、I/O 多路转接之 select 1. 初识 select2. select 函数原型2.1 关于 fd_set 结…...

华院计算3项应用成果入选钢铁行业智能制造解决方案推荐目录(2024年)

近日&#xff0c;中国钢铁工业协会发布《钢铁行业智能制造解决方案推荐目录&#xff08;2024年&#xff09;》。由中国钢铁工业协会、钢铁行业智能制造联盟共同开展了2024年钢铁行业智能制造解决方案及数字化转型典型场景应用案例遴选、智能制造创新大赛&#xff08;钢铁行业赛…...

python使用cookie、session、selenium实现网站登录(爬取信息)

一、使用cookie 这段代码演示了如何使用Python的urllib和http.cookiejar模块来实现网站的模拟登录&#xff0c;并在登录后访问需要认证的页面。 # 导入必要的库 import requests from urllib import request, parse# 1. 导入http.cookiejar模块中的CookieJar类&#xff0c;用…...

vector模拟实现2

文章目录 vector的模拟实现erase函数resize拷贝构造赋值重载函数模版构造及其细节结语 我们今天又见面啦&#xff0c;给生活加点impetus&#xff01;&#xff01;开启今天的编程之路 今天我们来完善vector剩余的内容&#xff0c;以及再探迭代器失效&#xff01; 作者&#xff…...

观察者模式在Java单体服务中的运用

观察者模式主要用于当一个对象发生改变时&#xff0c;其关联的所有对象都会收到通知&#xff0c;属于事件驱动类型的设计模式&#xff0c;可以对事件进行监听和响应。下面简单介绍下它的使用&#xff1a; 1 定义事件 import org.springframework.context.ApplicationEvent;pu…...

详解相机的内参和外参,以及内外参的标定方法

1 四个坐标系 要想深入搞清楚相机的内参和外参含义&#xff0c; 首先得清楚以下4个坐标系的定义&#xff1a; 世界坐标系&#xff1a; 名字看着很唬人&#xff0c; 其实没什么大不了的&#xff0c; 这个就是你自己定义的某一个坐标系。 比如&#xff0c; 你把房间的某一个点定…...

在线sql 转 rust 模型(Diesel、SeaORM),支持多数据 mysql, pg等

SQL 转 Rust 在 Rust 语言中&#xff0c;常用 Diesel 和 SeaORM 进行数据库操作。手写 ORM 模型繁琐&#xff0c;gotool.top 提供 SQL 转 Diesel、SeaORM 工具&#xff0c;自动生成 Rust 代码&#xff0c;提高开发效率。 特色 支持 Diesel / SeaORM&#xff0c;生成符合规范…...

高并发内存池(二):Central Cache的实现

前言&#xff1a;本文将要讲解的高并发内存池&#xff0c;它的原型是Google的⼀个开源项⽬tcmalloc&#xff0c;全称Thread-Caching Malloc&#xff0c;近一个月我将以学习为目的来模拟实现一个精简版的高并发内存池&#xff0c;并对核心技术分块进行精细剖析&#xff0c;分享在…...

[Windows] VutronMusic v1.6.0 音乐播放器纯净版,可登录同步

VutronMusic-简易好看的PC音乐播放器 链接&#xff1a;https://pan.xunlei.com/s/VOMq7P_fTyhLUXeGerDVhrCTA1?pwduvut# VutronMusic v1.6.0 音乐播放器纯净版&#xff0c;可登录同步...

macvlan 和 ipvlan 实现原理及设计案例详解

一、macvlan 实现原理 1. 核心概念 macvlan 允许在单个物理网络接口上创建多个虚拟网络接口&#xff0c;每个虚拟接口拥有 独立的 MAC 地址 和 IP 地址。工作模式&#xff1a; bridge 模式&#xff08;默认&#xff09;&#xff1a;虚拟接口之间可直接通信&#xff0c;类似交…...

【蓝桥杯】每日练习 Day19,20

目录 前言 蒙德里安的梦想 分析 最短Hamilton路径 分析 代码 乌龟棋 分析 代码 松散子序列 分析 代码 代码 前言 今天不讲数论&#xff08;因为上课学数论真是太难了&#xff0c;只学了高斯消元&#xff09;所以今天就不单独拿出来讲高斯消元了。今天讲一下昨天和…...