深入解析: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\libs | aps-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看到这里就结束了,我们俩个真强!
功能展示图片:

还得看看这里展示图片的问题,后续学习到了再说
浙公网安备 33010602011771号