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看到這里就結束了,我們倆個真強!
功能展示圖片:? ? ?
還得看看這里展示圖片的問題,后續學習到了再說
?