uniapp对接unipush 1.0 ios/android

embedded/2024/12/29 8:00:18/

简介

实现方法 是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/embedded/148364.html

相关文章

软件测试之测试用例

文章目录 测试用例测试用例的编写总结 测试用例 测试用例:描述测试点执行的文档(测试输入、执行条件、预期结果等) 作用 1.测试点能被精准执行 2.便于团队合作测试用例核心内容 用例编号、用例标题、所属模块、优先级、前置条件、测试步骤、测试数据、预期结果 测试用例的编写…

html 中 表格和表单的关系与区别

在 HTML 中&#xff0c;表格 (<table>) 和表单 (<form>) 是两种常用于展示数据和收集用户输入的元素。它们具有不同的功能和结构。以下是关于这两者的详细介绍&#xff1a; 1. HTML 表格&#xff08;<table>&#xff09; 表格用于展示结构化的数据&#xf…

碰一碰发视频源码搭建的技术拓展,支持OEM

一、引言 在当今数字化营销与便捷信息传播的时代背景下&#xff0c;手机 NFC 碰一碰发视频结合智能文案生成技术展现出了巨大的潜力与应用前景。通过近场通信&#xff08;NFC&#xff09;的便捷触发方式&#xff0c;能够快速地向用户推送视频内容&#xff0c;再借助智能文案生成…

(2024.12)Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败>记录

一、安装openMVS 官方文档&#xff1a;https://github.com/cdcseacave/openMVS/wiki/Building sudo apt-get -y install git mercurial cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev eigen git clone https://gitlab.com/libeigen/eigen --branch 3.4 mkdi…

iOS 多个输入框弹出键盘处理

开发中遇到这样一个场景&#xff0c;有多个输入框 而不同的输入框&#xff0c;需要页面向上偏移的距离不一样 这个时候&#xff0c;需要我们在获取到键盘弹出通知的时候&#xff0c;需要 知道我们开始进行编辑的是哪一个输入框&#xff0c;这个时候 需要我们知道一个技术点&…

RCE 命令执行漏洞 过滤模式 基本的过滤问题 联合ctf题目进行实践

前言 知道RCE 命令执行分为 代码执行 和 命令执行 原理 &#xff1a; 就是用户的输入被当做命令或者代码执行了 从而造成了危害 代码执行 除了eval php代码执行漏洞的函数还有 eval()、a ssert()、 preg_replace()、 create_function()、 array_map()、 call_user_func(…

Python爬虫获取1688详情接口详细解析

概述 1688作为阿里巴巴集团旗下的批发交易平台&#xff0c;提供了丰富的API接口供开发者获取商品详情信息。本文将详细介绍如何使用Python爬虫技术结合1688的API接口来获取商品详情数据。 1688 API接口简介 1688提供的商品详情API接口允许开发者获取商品的详细信息&#xff…

canvas绘制仪表盘刻度盘

canvas画布可以实现在网页上绘制图形的方法&#xff0c;比如图表、图片处理、动画、游戏等。今天我们在vue模板下用canvas实现仪表盘的绘制。 对canvas不熟悉的同学可以先了解下canvas的API文档&#xff1a;canvas API中文网 - Canvas API中文文档首页地图 一、创建模板&#…