安卓端 在線推送功能演示:
1、dcloud后臺申請開通uniPush
dcloud后臺
(1):找到我的應用
(2):點進去后,各平臺信息,點擊新增
(3):填寫包名,簽名等信息
包名:就是你原生APP-云打包 時的Android包名
SHA1和SHA256:參考我的另一篇文章,詳細介紹了如何生成證書,和獲取證書信息鏈接地址
MD5:上一篇文章中使用JDK獲取到SHA1和SHA256,獲取不到MD5,找找資料發(fā)現(xiàn)說是因為JDK版本過高,降低版本后也無法解決這個問題,后來從官網(wǎng)了解到,獲取安裝包的簽名,每2位中間間隔一個冒號就是md5。
所以這里參考另一篇文章,如何獲取APP簽名
這里需要注意:你的APP必須安裝到手機中之后
,在使用這個工具,才能獲取到簽名
獲取到的簽名每2位字母中間間隔一個 :
就可以了。
(4):選擇uniPush2.0,選擇對應的項目,平臺選擇安卓,Android包名就是上一步填寫的包名信息
,會自動生成到下邊2個框內(nèi)
(5):添加云服務空間
測試階段,我們就選免費試用一個月。并確認開通。(完成后需要等待10分鐘左右)
10分鐘后,返回(4)關聯(lián)云空間,并開通應用。
(6):以上內(nèi)容全部完成后,消息推送 即可手動推送消息。
寫到這里 uniPush
的申請開通教程已完成
2、配置manifest.json
該項目僅供測試,所以沒有做離線推送(離線推送牽扯到應用上架等內(nèi)容。等以后做這塊內(nèi)容的再來更新)
3、app.vue
(1):首先要保證我們用到的通知管理權限要開啟。permission.js
import permision from "@/js_sdk/wa-permission/permission.js"
export default {
onLaunch: function() {
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var NotificationManagerCompat = plus.android.importClass(
"android.support.v4.app.NotificationManagerCompat"
);
//android.support.v4升級為androidx
if (NotificationManagerCompat == null) {
NotificationManagerCompat = plus.android.importClass(
"androidx.core.app.NotificationManagerCompat"
);
}
var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();
// 未開通‘允許通知’權限,則彈窗提醒開通,并點擊確認后,跳轉(zhuǎn)到系統(tǒng)設置頁面進行設置
if (!areNotificationsEnabled) {
console.log('請開啟權限:通知管理-允許通知')
uni.showModal({
title: '權限提示',
content: '請前往 通知管理 開啟權限',
confirmColor: '#7287EA',
success: function(res) {
if (res.confirm) {
permision.gotoAppPermissionSetting() // 跳轉(zhuǎn)到APP設置,用戶手動開啟通知權限
} else if (res.cancel) {
console.log('用戶點擊取消');
}
}
});
}
}
}
(2):開始創(chuàng)建通知欄uni.createPushMessage
為了能夠及時收到用戶發(fā)來的消息,所以需要在主進程中寫一個輪詢,查到有新消息就創(chuàng)建系統(tǒng)通知欄
setInterval(() => {
let session_id = uni.getStorageSync('session_id') ? uni.getStorageSync('session_id') : '';
// console.log(session_id)
this.$http.post("/api/Chat/msgNotify", {
id: session_id,
}).then(res => {
if (res.code == 1) {
if(session_id == data.session_id){
// 這里為什么要判斷:因為當A--B進行會話,我肯定不希望B發(fā)送的消息也創(chuàng)建系統(tǒng)通知欄,
// 進入會話頁面要向本地存儲session_id,離開會話頁面就清除本地的session_id
// 所以要判斷,如果當前的會話id == 接口返回的會話id 則不提醒。
return
}else{
uni.createPushMessage({
icon:require('./static/logo58.png'),
title:title,
content:content,
payload:{
// 這里地方你可以隨意組合你想要的數(shù)據(jù),uni.onPushMessage會監(jiān)聽到你組合的數(shù)據(jù)。
session_id:res.data.session_id,
page:'/pages/index/index?id='+res.data.session_id
},
success:(res=>{
console.log('成功創(chuàng)建')
}),
})
}
}
})
}, 4000);
(3):監(jiān)聽通知欄被點擊,當通知欄被點擊后會打開APP,可以拿到上一步自己組合的數(shù)據(jù),進行一些操作文章來源:http://www.zghlxwxcb.cn/news/detail-802059.html
uni.onPushMessage((res) => {
uni.removeStorageSync('session_id');
let url = res.data.payload.page;
console.log('監(jiān)聽推送消息-----' + res)
setTimeout(() => {
this.$goBack(2, url)//OK=== 跳轉(zhuǎn)到聊天頁面
}, 1000)
})
以上內(nèi)容已完成。有什么不理解歡迎給我留言-.-文章來源地址http://www.zghlxwxcb.cn/news/detail-802059.html
到了這里,關于uniapp:3分鐘搞定在線推送uni.createPushMessage,uni.onPushMessage的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!