深入解析:uniapp写app做测试手机通知栏展示内容

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

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

增加  notify.js   以下文件

// 模拟本地通知功能
export function showNotification() {
// 1. 检查通知权限(Android)
// #ifdef APP-PLUS
if (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" }  // 携带跳转路径参数
}
);
}

增加点击事件  随便个地儿

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内容合并到一起

dcloud_properties.xml配置

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

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

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

功能展示图片:     

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

posted @ 2025-08-15 22:21  yjbjingcha  阅读(5)  评论(0)    收藏  举报