uniapp写app做测试手机通知栏展示内容

uniapp写app做测试手机通知栏展示内容

以下代码:只是个简单测试能不能给手机发送消息,能不能引导打开通知权限,能不能进行跳转的功能,

增加  notify.js   以下文件


// 模拟本地通知功能
export function showNotification() {// 1. 检查通知权限(Android)// #ifdef APP-PLUSif (plus.os.name === "Android") {const main = plus.android.runtimeMainActivity();const NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat");// 获取主Activity和包名// const main = plus.android.runtimeMainActivity();const pkName = main.getPackageName();// 检测权限状态const isEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();if (!isEnabled) {uni.showModal({title: "通知权限未开启",content: "请前往设置开启通知权限",confirmText: "去设置",success: () => {try {const Intent = plus.android.importClass("android.content.Intent");const Build = plus.android.importClass("android.os.Build");let intent = new Intent();if (Build.VERSION.SDK_INT >= 26) { // Android 8.0+intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");intent.putExtra("android.provider.extra.APP_PACKAGE", pkName);} else { // 低版本通用方案const Settings = plus.android.importClass("android.provider.Settings");const Uri = plus.android.importClass("android.net.Uri");intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);intent.setData(Uri.fromParts("package", pkName, null));}main.startActivity(intent);} catch (e) {uni.showToast({ title: "跳转失败", icon: "none" });console.error(e);}}});}}// #endif// 2. 发送通知(固定内容)plus.push.createMessage("这是固定通知内容", // 通知正文(死值)"系统通知",         // 通知标题(死值){cover: true,      // 覆盖旧通知sound: "system",   // 使用系统提示音payload: { path: "/pages/profile/index" }  // 携带跳转路径参数});
}

增加点击事件  随便个地儿

<button @click="triggerNotify">触发模拟通知</button>import { showNotification } from './notify.js';const triggerNotify =()=> {showNotification();uni.showToast({ title: '已发送模拟通知' });}

这只是个简单测试能不能给手机发送消息,能不能引导打开通知页,能不能进行跳转的功能

以上内容如果使用HBuilderX的话,使用基座运行是可以推送了

接下来是打包成apk之后能推送的操作

参考文件地址:uniPush | uni小程序SDK【地址:https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/push.html】

我这边是用的sdk4.66,【点击进入App离线SDK下载】【地址:https://nativesupport.dcloud.net.cn/AppDocs/download/android.html#android-%E7%A6%BB%E7%BA%BFsdk-%E6%AD%A3%E5%BC%8F%E7%89%88】

奥   很烦那种别的地儿搬你文章不把你点击进别的地方路径搬过去,我就俩都放了

记得放这俩文件哈,放到libs下面

HBuilderX 3.99及以上版本所需的libs仅为:

路径文件
SDK\libsaps-release.aar, aps-unipush-release.aar

接下来我们去开通 uniPush的推送功能:https://dev.dcloud.net.cn/pages/app/push2/index

看到这些信息了  哎!这些信息有用

接下来这块内容是官网的:

gradle配置

打开build.gradle,在defaultConfig添加manifestPlaceholders节点,如下图所示,将io.dcloud.HBuilder替换成自己的应用包名,将appid等信息替换成申请之后的appid等。

应用的app id/app key等信息,从开发者后台->unipush->配置管理->应用管理 界面查看 ** 注意:HBuilderX3.1.15之后需要添加GETUI_APPID属性 **

android {defaultConfig {manifestPlaceholders = ["GETUI_APPID": "unipush的appid","plus.unipush.appid" : "unipush的appid","plus.unipush.appkey" : "unipush的key","plus.unipush.appsecret": "unipush的secret","apk.applicationId":"io.dcloud.HBuilder"]}
}

附:配置图片 

 

HBuilderX 3.99及以上版本的配置如下:

  • 项目根目录下的build.gradle

    打开项目根目录下的build.gradle

    需要在项目根目录下的build.gradle下添加个推的仓库地址,如下:

    allprojects {repositories {jcenter()google()// 个推的Maven仓地址。maven { url 'https://mvn.getui.com/nexus/content/repositories/releases' }}
    }

AndroidManifest.xml配置

在io.dcloud.PandoraEntry的Activity标签下追加intent-filter,注意不能和其他的intent-filter内容合并到一起

<intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:host="io.dcloud.unipush" android:path="/" android:scheme="unipush" />
</intent-filter>

dcloud_properties.xml配置

在properties中添加如下配置,features节点与services节点必须同时配置!

<properties><features><feature name="Push" value="io.dcloud.feature.aps.APSFeatureImpl"><module name="unipush" value="io.dcloud.feature.unipush.GTPushService"/></feature></features>	<services><service name="push" value="io.dcloud.feature.aps.APSFeatureImpl"/></services>
</properties>

 有可能官网有写其他配置了,我这边暂时没用到,打成apk 暂时用模拟器是可以跑的

ok看到这里就结束了,我们俩个真强!

功能展示图片:     

还得看看这里展示图片的问题,后续学习到了再说

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92698.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式云计算:未来计算架构的全新演进

随着信息技术的不断发展,尤其是云计算技术的飞速进步,企业和个人对计算资源的需求已经从传统的单一数据中心向更为灵活、可扩展的分布式架构转变。分布式云计算作为一种新兴的云计算模型,旨在将计算资源和数据存储分布在多个地理位置上,从而提供更加高效、安全和可靠的服务…

2025年海外短剧独立站开发:H5+PC端双平台技术实践与增长策略

引言在全球化内容消费浪潮下&#xff0c;海外短剧市场正经历爆发式增长。据DataEye《2025H1海外微短剧行业数据报告》显示&#xff0c;2025年海外短剧市场规模预计突破45亿美元&#xff0c;其中东南亚、拉美等新兴市场贡献超30%增量。本文将以某头部短剧平台的双平台开发实践为…

OpenAI发布ChatGPT Agent,AI智能体迎来关键变革

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》&#xff08;跟我一起学人工智能&#xff09;【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

企业级安全威胁检测与响应(EDR/XDR)架构设计

在这个网络威胁如洪水猛兽的时代&#xff0c;企业的安全防护不能再像守城门的老大爷一样只会喊"什么人&#xff1f;口令&#xff01;"了。我们需要的是一套像FBI一样具备全方位侦察能力的智能防护系统。 &#x1f4cb; 文章目录 1. 什么是EDR/XDR&#xff1f;别被这…

Stream流-Java

Stream流的作用&#xff1a;结合了Lambda表达式&#xff0c;简化集合&#xff0c;数组的操作Stream流的使用步骤&#xff1a;1. 先得到一条Stream流&#xff08;流水线&#xff09;&#xff0c;并把数据放上去获取方式方法名说明单列集合default Stream<E> stream()Colle…

Leetcode 327. 区间和的个数

1.题目基本信息 1.1.题目描述 给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中&#xff0c;值位于范围 [lower, upper] &#xff08;包含 lower 和 upper&#xff09;之内的 区间和的个数 。 区间和 S(i, j) 表示在 nums 中&#xff0c;位置从 i 到 j 的元素…

MinIO 版本管理实践指南(附完整 Go 示例)

✨ 前言 在构建企业级对象存储系统时,“对象的版本管理”是一个关键特性。MinIO 作为一款高性能、Kubernetes 原生的 S3 兼容对象存储系统,也支持强大的版本控制功能。 本文将通过 Go 示例代码 + 实操讲解 的形式,手把手带你掌握 MinIO 的版本控制能力,包括开启版本控制、…

数组toString方法及类型检测修复方案

在 JavaScript 中&#xff0c;数组的 toString() 方法被覆盖&#xff08;重写&#xff09;为返回数组元素的逗号分隔字符串&#xff0c;而不是原始的 [object Array] 类型标识。以下是详细解释和修复方案&#xff1a;问题原因Array.prototype.toString 被覆盖数组继承自 Object…

mysql索引底层B+树

B树胜出的关键特性&#xff1a;矮胖树结构&#xff1a;3-4层高度即可存储2000万条记录&#xff08;假设每页存1000条&#xff09; 叶子链表&#xff1a;所有数据存储在叶子节点&#xff0c;并通过双向链表连接 非叶导航&#xff1a;非叶子节点仅存储键值&#xff0c;不保存数据…

AI开放课堂:钉钉MCP开发实战

我们正处在AI技术爆发的时代&#xff0c;也处于企业数字化蓬勃发展的时代。如何利用AI技术&#xff0c;突破模型自身知识的局限&#xff0c;安全、高效地与外部世界连接和交互&#xff0c;是当前所有AI开发者在企业数字化中面临的问题之一。 MCP&#xff08;Model Context Prot…

DigitalOcean 一键模型部署,新增支持百度开源大模型ERNIE 4.5 21B

使用过DigitalOcean GPU Droplet 服务器的用户应该对我们的一键模型部署功能不陌生。DigitalOcean 的一键模型部署 (1-Click Models) 功能是 DO 为开发者和企业提供的一种便捷方式&#xff0c;用于快速部署和运行预训练的生成式 AI 模型&#xff0c;尤其是大型语言模型 (LLM)。…

【嵌入式面试】嵌入式笔试与面试宝典(offer必来)

&#x1f48c; 所属专栏&#xff1a;【嵌入式面试】 &#x1f600; 作  者&#xff1a;兰舟比特 &#x1f43e; &#x1f680; 个人简介&#xff1a;热爱开源系统与嵌入式技术&#xff0c;专注 Linux、网络通信、编程技巧、面试总结与软件工具分享&#xff0c;持续输出实用干…

企业级数据分析创新实战:基于表格交互与智能分析的双引擎架构

引言&#xff1a;数字化转型中数据协同困境与系统融合挑战 在数字化转型实践中&#xff0c;企业普遍面临数据系统与业务运营的协同困境&#xff0c;主要表现为数据处理平台与核心业务流程的架构隔离、分析成果与决策闭环的价值断层、以及双重数据维护带来的资源损耗。这种系统…

openbmc 日志系统继续分析

1.说明 1.1 总体说明 本节是继: https://blog.csdn.net/wit_yuan/article/details/147142407?spm=1011.2415.3001.5331 后的继续分析的文档。 该篇内容主要目的是分析整个openbmc的日志系统。 注意解读文档: https://github.com/openbmc/docs/blob/master/designs/event-l…

【JIRA小白如何使用它进行bug管理】

JIRA小白如何使用它进行bug管理 提示&#xff1a;入职一般来说&#xff0c;公司会提供账号&#xff0c;不需要部署如何提bug&#xff1a; JIRA有两种提交方式 在执行测试用例中在bug管理项目中新建提bug建议或者注意事项&#xff1a; 标题&#xff1a;执行完A之后&#xff0c;发…

陪诊小程序系统开发:开启医疗陪护新时代

在快节奏的现代生活中&#xff0c;人们面临着各种各样的压力&#xff0c;健康问题也日益凸显。当生病就医时&#xff0c;尤其是对于老年人、孕妇、残障人士等特殊群体&#xff0c;独自前往医院往往会遇到诸多困难&#xff0c;如不熟悉医院流程、行动不便、心理上感到孤独无助等…

Leetcode—1035. 不相交的线【中等】

2025每日刷题&#xff08;214&#xff09; Leetcode—1035. 不相交的线最长公共子序列长度&#xff08;Longest Common Subsequence&#xff0c;LCS&#xff09; 给定两个序列&#xff08;如字符串或数组&#xff09;&#xff0c;最长公共子序列&#xff08;LCS&#xff09;是同…

使用 Conda 工具链创建 UV 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》

Python 多版本环境治理理念驱动的系统架构设计&#xff1a;三维治理、四级隔离、五项自治 原则-CSDN博客 Python 多版本与开发环境治理架构设计-CSDN博客 【终极实战】Conda/Poetry/Virtualenv/Pipenv/Hatch 多工具协同 AnacondaPyCharm&#xff1a;构建 Python 全版本栈隔离…

一文通透mamba2「力证Transformer are SSM」:从SSM、半可分矩阵、SMA、SSD到mamba2

前言 实话说&#xff0c;过去一两月一直忙着我司两大类项目的推进 一类是正在逐一上线基于大模型的论文翻译、论文审稿、论文对话、论文修订/润色、论文idea提炼等等(截止到24年8月底&#xff0c;其中的审稿和翻译已上线七月官网 )一类是正在抓紧做面向一个个工厂的具身智能机…