APP推送記錄
一、使用框架
Uniapp+unipush推送插件
二、需要提前準備的
1.準備自有證書
可以用這個網站—香蕉云編(用于安卓 ios證書生成)https://www.yunedit.com/update/androidzhengshu/list
安卓證書生成后,下載證書,除了原文件的保留,也要把證書信息記錄下來,如 (密鑰庫密碼和密鑰密碼 密碼設置最好設置到一樣的)密鑰庫密碼、密鑰密碼 、證書md5值 、sha256值、 sha1值等保存到那,后續使用。
2.新建uniapp項目
新建項目后,manifest.json文件中設置包名(包名規則:com.你的公司.你的項目)和appId,這2個至關重要,一旦設置最好不要輕易修改
3.配置unipush
在manifest.json中,你不勾選unipush手動打一次包
然后在進入manifest頁面點擊配置就可以跳轉到配置網站頁面
進入網站后你就可以看見你的項目了,
點擊左邊菜單uni-push來設置你的應用信息。
這樣基本信息算設置完成。
接下來,如果你想要app接受離線推送(當app被徹底殺死),那么就需要去進行廠商推送設置,這是一個很麻煩、很漫長的過程。
接下來你需要去各個廠商申請企業開發者賬號,成為開發者(有些廠商不僅需要公司的各種信息還需申請者的身份證還需要對公打款),當這些都申請成功了你以為完了?不,還需要去應用服務那申請應用,去推送服務那申請推送。
1).比如華為:配置推送服務時,必須申請自分類權益
2).比如小米:如果你的應用要上架(需要軟著、備案等信息),如果你不上架,那么就需要先提交工單,申請不上架應用,申請通過后,左邊菜單才有個企業內部應用,在這個下面去新建應用后還得進行上架申請(準備好app圖片、還得打空包等),打空包的文檔如下
審核通過后,就點擊小米平臺的推送服務,如上圖,剛開始是未啟用狀態,你得再去申請,當審核通過后狀態就會變成已啟用。當操作中有應用信息的時候,你就可以點擊了,再去消息分類管理/channel列表中申請分類,(https://dev.mi.com/xiaomihyperos/documentation/detail?pId=1655這是分類文檔,在申請時需要提前了解)
當審核成功后,留著通知類別id后面用。
3).比如vivo,這要求應用必須上架,但是你又不想上架又想繼續使用vivo的廠商推送通道。你就得去提工單了,告訴他你又不想上架又想繼續使用推送服務的原因,并提交蓋了公章的承諾函。等審核通過后,他會要求你先進行上架,這下你就得保證你的app包有隱私協議,登錄頁面有隱私協議詢問,app里面有隱私協議入口,隱私協議還可以外網訪問。保證這些后就可以上架了,當你調通了后就得馬上下架app。
4).比如oppo,當你的應用和推送都申請了,還得去申請工單,提交不上架應用推送服務申請(準備隱私協議測試報告、app包),找到"/channel_id": “填寫OPPO平臺登記的渠道ID”,“/category”: “填寫Opush消息類別category”。
4.返回dcolud配置unpush
當所有廠商申請好了,可以回到這里配置廠商通道了
三、集成驗證
- 客戶端獲取 cid
假如我要給“張三”打電話,那就需要知道對方的電話標識,即電話號碼是多少。 同理,要給某個客戶端推送消息,也需要知道該設備的客戶端推送標識。
啟動 app 后成功獲取 cid 則說明云打包 “在線推送” 成功,支持在線推送。
先跟著示例代碼簡單體驗,詳細的uni.getPushClientId API介紹 詳情參考 代碼示例:
// uni-app客戶端獲取push客戶端標記,代碼可以實現在App.vue中
uni.getPushClientId({
success: (res) => {
let push_clientid = res.cid
console.log(‘客戶端推送標識cid:’,push_clientid)
},
fail(err) {
console.log(err)
}
})
1). 校驗廠商離線推送是否集成成功
輸入上方獲取的 cid ,查詢到對應的 Device Token 則說明云打包 “離線推送” 成功,同時支持離線推送。
如果未查詢到 device token,則只能 “在線推送” 。離線推送想要手機接受到還需要配置云函數js
2.服務端推送消息
注意:使用 uni-push 2.0,服務端不支持用個推 api 推送,只能用 dcloud 提供的 服務端(云函數)推送 。
unipush2快速接入指南:
uni-push 2.0 常見問題:https://ask.dcloud.net.cn/article/40291
1).云函數創建
注意:擴展庫依賴 3 張 opendb 表:opendb-tempdata,opendb-device,uni-id-device。公測版 uniCloud,執行擴展庫會自動創建。如果你使用的是 uniCloud 正式版需要自己在 uniCloud 的 web控制臺 創建這3張表。
示例如下:
3.云函數執行
在云函數文件目錄右鍵(或按快捷鍵ctrl + r)-> 上傳并運行云函數,此時你的客戶端將收到推送消息(應用關閉時為通知欄消息,在線時代碼監聽到推送消息)。
云函數中調用uni-cloud-push擴展庫的sendMessage方法,向客戶端推送消息
// 簡單的使用示例
'use strict'; const uniPush = uniCloud.getPushManager({appId:"__UNI__XXXXXX"}) //注意這里需要傳入你的應用appId
exports.main = async (event, context) => { return await uniPush.sendMessage({ "push_clientid": "xxx", //填寫上一步在uni-app客戶端獲取到的客戶端推送標識push_clientid "force_notification":true, //填寫true,客戶端就會對在線消息自動創建“通知欄消息”。 "title": "通知欄顯示的標題", "content": "通知欄顯示的內容", "settings": { //消息有效期設置,單位毫秒,-1表示不設離線。默認是 2 小時,取值范圍:-1 ~ 3 * 24 * 3600 * 1000(3天)之間 "ttl":86400000 }, "payload": { "text":"體驗一下uni-push2.0" }, "category": { //HarmonyOS NEXT系統(純血鴻蒙、非安卓鴻蒙)的消息分類,要給鴻蒙設備推送時才必傳 "harmony":"MARKETING" }, "options":{ //這里是需要配置的,之前進行消息分類申請"HW": { // 值為int 類型。1 表示華為測試消息,華為每個應用每日可發送該測試消息500條。此 target_user_type 參數請勿發布至線上。 "/message/android/target_user_type":1 } , "HO": { //值為int 類型。1 表示測試推送,不填默認為0。榮耀每個應用每日可發送該測試消息1000條。此測試參數請勿發布至線上。 "/android/targetUserType": 1 } , "VV": { //值為int 類型。0 表示正式推送;1 表示測試推送,不填默認為0。此 pushMode 參數請勿發布至線上。 "/pushMode":1 } , "XM": { //新小米消息分類下,私信公信id都必須要傳,否則請求小米廠商接口會被攔截 "/extra.channel_id": "填寫小米平臺申請的渠道id" } } })
};
注意:非OPPO、VIVO軟件商店官方渠道下載的應用,廠商不提供公信消息服務。
vivo、oppo 對接離線推送時,可以暫時發送測試消息,額外需要分別在 vivo 開放平臺 、 oppo開放平臺 錄入測試用戶(regid 對應個推cid 綁定的 device token,可以從個推后臺的“故障排查”中查詢 cid 信息獲取)。
在線消息無額度限制。離線推送各廠商的限額(包含 extra.channel_id 如何申請),詳見: 廠商通道限額
HarmonyOS NEXT系統(純血鴻蒙、非安卓鴻蒙)的消息分類,harmony取值參考 云端通知category取值
如果你希望當應用在線時,也通過“通知欄消息”來提醒用戶;可以通過以下兩種方式實現:
1).監聽到消息內容后,根據業務需要自己判斷是否要創建“通知欄消息”,需要就調用創建本地消息API uni.createPushMessage手動創建通知欄消息。
2).服務端執行推送時,傳遞參數force_notification:true,客戶端就會自動創建“通知欄消息”(此時你監聽不到消息內容),當用戶點擊通知欄消息后,APP才能監聽到消息內容。
先跟著示例代碼簡單體驗,詳細的 uniPush.sendMessage API介紹 詳情參考
檢查確認當前 app 的通知欄權限開啟后,則可以開始進行推送測試。
4.測試在線推送,打開 app 在前臺時進行推送
- 測試離線推送,關閉 app 進程時進行推送
下面是已經用于項目的云函數js配置(其中小米、華為、oppo需要申請,其他的可以通用)
"HW": {"/message/android/category": 'DEVICE_REMINDER', //設備提醒
},
"HO": {
"/android/notification/importance": "NORMAL" //importance字段值為LOW:資訊營銷類消息 ;importance字段值為NORMAL:服務與通訊類消息
},
"VV": {
"/category":'DEVICE_REMINDER',//系統消息-設備消息
},
"XM": {
"/extra.channel_id": "", // 小米通知渠道ID 需要在消息分類管理-channel列表進行申請
},
"OPPO": {// "/channel_id": "填寫OPPO平臺登記的渠道ID",// "/category": "填寫Opush消息類別category",
},
"MZ": {"/noticeMsgType": 1 //魅族 請填寫整數類型的消息分類(0:公信;1:私信)
}
四、文檔地址
Doclud地址:https://dev.dcloud.net.cn/pages/app/push2/thirdparty
unipush2快速接入指南:
uni-push 2.0 常見問題:https://ask.dcloud.net.cn/article/40291
消息分類文檔:https://docs.getui.com/getui/server/rest_v2/third_party/?id=doc-title-28
離線配置文檔:
https://docs.getui.com/getui/mobile/vendor/qps/
廠商應用開通指南:
https://docs.getui.com/getui/mobile/vendor/vendor_open/
Vivo消息分類文檔:https://push.baidu.com/doc/guide/vivo_category