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\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内容合并到一起!
<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看到这里就结束了,我们俩个真强!
功能展示图片:
还得看看这里展示图片的问题,后续学习到了再说