現今智能終端App愈來愈多,各個App推送的信息量急速擴張,如何讓本身推送的信息精準抓住用戶的視線,在市場競爭中佔據高地?其中一個答案就是——主題訂閱消息推送。java
主題訂閱消息推送能夠根據用戶習慣或讓用戶自定義感興趣主題,應用再根據須要撰寫主題消息,推送服務負責將消息可靠地傳送至正確的設備,從而實現精準推送。例如,某個天氣預報應用的用戶可選擇加入「X市天氣」主題,並接收關於本地天氣的通知。android
華爲主題訂閱消息推送服務具備穩定、及時、高效的特色,多種推送樣式、自動推送通知、Deep linking可以助力應用精準觸達用戶,有效提高用戶活躍度和粘度。git
接下來,咱們詳細解析如何集成華爲主題訂閱消息推送服務。github
1、總體開發流程
Step1:應用App主題訂閱;
Step2:向訂閱主題的用戶羣發送消息;
Step3:驗證主題訂閱消息成功送達。json
服務端主題訂閱推送消息交互流程圖api
主題訂閱有兩種實現方式:App客戶端主題訂閱和服務端主題訂閱。本文將分別詳細介紹這兩種訂閱方式的實現步驟及代碼。服務器
2、集成關鍵步驟說明和代碼實現
(一)客戶端主題訂閱app
客戶端主題訂閱代碼實現:ide
public void subtopic(View view) { String SUBTAG = "subtopic"; String topic = "weather"; try { // 主題訂閱 HmsMessaging.getInstance(PushClient.this).subscribe(topic).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(Task<Void> task) { if (task.isSuccessful()) { Log.i(SUBTAG, "subscribe topic weather successful"); } else { Log.e(SUBTAG, "subscribe topic failed,return value is" + task.getException().getMessage()); } } }); } catch (Exception e) { Log.e(SUBTAG, "subscribe faied,catch exception:" + e.getMessage()); } }
App端側自定義訂閱界面:ui
主題訂閱取消代碼實現:
public void unsubtopic(View view) { String SUBTAG = "unsubtopic"; String topic = "weather"; try { // 主題訂閱 HmsMessaging.getInstance(PushClient.this).unsubscribe(topic).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(Task<Void> task) { if (task.isSuccessful()) { Log.i(SUBTAG, "unsubscribe topic successful"); } else { Log.e(SUBTAG, "unsubscribe topic failed,return value is" + task.getException().getMessage()); } } }); } catch (Exception e) { Log.e(SUBTAG, "subscribe faied,catch exception:" + e.getMessage()); } }
App端測自定義取消訂閱界面:
(二)服務端主題訂閱
一、獲取Access Token。調用華爲賬號服務器的接口(https://oauth-login.cloud.huawei.com/oauth2/v3/token),獲取應用級鑑權憑證Access Token。
(1)請求消息:
POST /oauth2/v3/token HTTP/1.1 Host: oauth-login.cloud.huawei.com Content-Type: application/x-www-form-urlencoded grant_type=client_credentials& client_id=<APP ID >& client_secret=<APP secret >
(2)獲取Access Token請求消息實戰演示:
二、主題訂閱與退訂。服務器調用服務端主題訂閱API或主題退訂API進行應用主題訂閱或退訂,實現對應用主題的管理。主題訂閱與退訂的區別在於接口地址稍有不一樣,請求消息頭和消息體均爲一直,具體以下:
(1)主題訂閱接口:
https://push-api.cloud.huawei.com/v1/[appid]/topic:subscribe
(2)主題取消訂閱接口:
https://push-api.cloud.huawei.com/v1/[appid]/topic:unsubscribe
(3)請求消息頭示例,此處Bearer Token爲上一步獲取的Access Token:
Authorization: Bearer CV0kkX7yVJZcTi1i+uk…Kp4HGfZXJ5wSH/MwIriqHa9h2q66KSl5 Content-Type: application/json
(4)請求消息體示例:
{ "topic": "weather", "tokenArray": [ "AOffIB70WGIqdFJWJvwG7SOB...xRVgtbqhESkoJLlW-TKeTjQvzeLm8Up1-3K7", "AKk3BMXyo80KlS9AgnpCkk8l...uEUQmD8s1lHQ0yx8We9C47yD58t2s8QkOgnQ" ] }
(5)請求消息實戰演示:
(三)發送主題消息
當建立完主題後,就能夠根據主題發送消息,當前支持基於HTTPS協議進行主題消息發送。基於HTTPS協議示例報文以下:
{ "validate_only": false, "message": { "notification": { "title": "message title", "body": "message body" }, "android": { "notification": { "click_action": { "type": 1, "action": "com.huawei.codelabpush.intent.action.test" } } }, "topic": "weather" } }
App客戶端測展現收到的推送消息:
3、主題訂閱消息注意事項
客戶端應用能夠訂閱任何現有主題,也可建立新主題。當客戶端應用訂閱新的主題名稱尚不存在時,推送服務會使用這個名稱建立一個新主題,隨後任何客戶端均可訂閱該主題。
推送服務端給您提供了基本的主題管理API,支持一次1000個之內的Token訂閱或者退訂某個主題,同時每一個應用最多隻能存在2000個不一樣的主題。
主題與Token的訂閱關係生效需等待一分鐘,待訂閱關係生效後,能夠經過指向Topic或者組合Topic條件的方式實現消息批量發送。
>>訪問華爲推送服務官網,瞭解更多相關內容
>>獲取華爲推送服務開發指導文檔
>>華爲HMS Core官方論壇
>>華爲推送服務開源倉庫地址:GitHub、Gitee
點擊右上角頭像右方的關注,第一時間瞭解華爲移動服務最新技術~