uniapp对接unipush 1.0 ios/android

ops/2024/12/21 9:56:17/

简介

实现方法 是uniapp官网推荐的 unipush-v1

文档配置具体看 uni-app官网

配置好了之后
代码实现

前端代码

前端的主要任务是监听 监听到title content 创建消息推送

安卓 可以收到在线消息并且自动弹出消息

IOS 可以监听到在线消息但是需要手动推送

以下代码app初始换完成就可运行

onPushMessage() {uni.onPushMessage(res => { let platform = uni.getSystemInfoSync().platform;let {type,data: {payload = {}}} = res || {};let {title = '',content = '',path = ''} = payload; if (path) {if (platform == 'ios' && type == "receive") {uni.createPushMessage({title,content,payload,success() {console.log("推送成功");},fail() {console.log("推送失败");}})return}uni.navigateTo({url: path,fail() {uni.showToast({title: "跳转失败"})}})} })},

node后端参考代码

const axios = require("axios");
const crypto = require("crypto");
const appData = {appID: "",appKey: "",appSecret: "",masterSecret: "",
};
const baseUrl = "https://restapi.getui.com/v2/eX4SOsJhiqAwaOuODvyDr";
let toAppUrl = `${baseUrl}/push/all`;
let tokenUrl = `${baseUrl}/auth`;
let singleUrl = `${baseUrl}/push/single/cid`;// let token = "";
function getTime() {return new Date().getTime();
}
function hash(text) {const hash = crypto.createHash("sha256");hash.update(text);return hash.digest("hex");
}
function getSign(appkey, timestamp, mastersecret) {return hash(appkey + timestamp + mastersecret);
}
function getToken(url = tokenUrl) {let { appID, appKey, appSecret, masterSecret } = appData;let timestamp = getTime();return new Promise((resolve, reject) => {axios({method: "post",url,data: {sign: getSign(appKey, timestamp, masterSecret),timestamp,appkey: appKey,},}).then((res) => {if (res.data.code == 0) {resolve(res.data.data.token);} else {reject(res);}});});
}
function schedule(taskid, token) {axios({method: "GET",url: `${baseUrl}/task/schedule/${taskid}`,headers: {token: token,},}).then((res) => {console.log("返回结果", res.data);});
}
async function single(url) {let request_id = getTime();let channel_id = getTime();let token = await getToken(tokenUrl);axios({method: "post",url,headers: {token: token,},data: {request_id,settings: {ttl: 7200000,},audience: { // 荣耀 5025894ea89b90b277affc77e3964029// 7327ae82e78a1840d367c4cf1411daeb 华为cid// 我的苹果 dd49a3f62e68d846ba9d8ab88a8a738bcid: [cid]},push_message: {  notification: {title: "提示",body: "通知内容",big_text: "通知内容",channel_id: "Default",channel_name: "Default",channel_level: 4,// click_type: "payload", // click_type: "intent",//intent:"intent://io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000;component=包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=;S.content=测试内容;S.payload={title: '自定义消息内容',path:'/Seting/index/index'};end",click_type: "payload", payload: JSON.stringify({title: "自定义消息内容在线通知",content:"自定义消息内容在线通知内容", path:"/Seting/index/index"})}},push_channel: {android: {ups: {notification: {title: "离线通知标题",body: "厂商通知内容",click_type: "intent",intent:`intent://io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000;component=app包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=;S.content=测试内容;S.payload={title: '自定义消息内容',path:'/Seting/index/index'};end`,},options: {HW: {"/message/android/notification/badge/class":"io.dcloud.PandoraEntry","/message/android/notification/badge/add_num": 1,"/message/android/category": "EXPRESS",},},},},ios: {type: "notify",payload: JSON.stringify({title: "自定义消息内容离线通知",path:"/Seting/index/index" }),aps: {alert: {title: "通知标题",body: "通知内容"},"content-available": 0,sound: "default",category: "ACTIONABLE",},auto_badge: "+1",},},},}).then((res) => {console.log(res.data);});
}
// toApp(toAppUrl);
single(singleUrl);


http://www.ppmy.cn/ops/143726.html

相关文章

mysql的事务和存储引擎+备份

mysql的事务和存储引擎备份 一. mysql的事务1.1 mysgl支持事务四种隔离级别1.2 事务控制语句1.3 行锁和死锁1.3.1 行锁1.3.2 死锁1.3.3 如何避免死锁的发生 二. msyql的备份和还原以及日志管理2.1 数据库备份的分类2.2 备份策略2.2.1 物理冷备份(全量)2.…

番外篇 Git 的原理与使用

PS:本篇是个长篇,但是阅读完,可以基本了解 Git 在实际开发中的绝大部分常用操作。 前言:什么是Git 我们在日常工作 / 学习时,对于某些文档 / 代码,可能会存在多个版本需要维护,但是随着版本的…

Mac iOS、Android、Flutter、React Native开发环境配置

1.安装XCode https://apps.apple.com/cn/app/xcode/id497799835?mt12 2.安装Android Studio https://developer.android.google.cn/studio 3.安装brew 参考地址:https://www.jianshu.com/p/22122a1d4474 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunk…

abc 383 C (bfs 最短路 )D(唯一分解定理,欧拉筛)

C 题: 首先暴力的想,对于每一个加湿器的位置去 上下左右扩展是 nm 的复杂度 。最多会有 nm 个加湿器。所以复杂度到达了n^3 。肯定超时了。 我们可以发现 对于一个点 会标记很多次,这回导致超时。 可以采用类似 bfs 求最短路的形式&#xff…

《Vue3实战教程》13:Vue3侦听器

如果您有疑问,请观看视频教程《Vue3实战教程》 侦听器​ 基本示例​ 计算属性允许我们声明性地计算衍生值。然而在有些情况下,我们需要在状态变化时执行一些“副作用”:例如更改 DOM,或是根据异步操作的结果去修改另一处的状态。…

Postman前置脚本使用案例

背景 由于我们的服务接口需要进行验签,每次通过Postman手动调用接口时都显得颇为繁琐。为了简化这一过程,我们可以充分利用Postman提供的脚本功能,自动为接口请求生成所需的签名。 案例 在Scripts中写生成接口签名的脚本。 以下是一个实用…

Spark-Streaming receiver模式源码解析

一、上下文 《Spark-Streaming初识》博客中我们用NetworkWordCount例子大致了解了Spark-Streaming receiver模式的运行。下面我们就通过该代码进行源码分析,深入了解其原理。 二、构建StreamingContext 它是Spark Streaming功能的主要入口点。并提供了从各种输入…

Day28 C++ 命名空间

2024.12.20 C 命名空间 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。 同样的情况…