現今智能終端App越來越多,各個App推送的信息量急速擴張,如何讓自己推送的信息精准抓住用戶的視線,在市場競爭中占據高地?其中一個答案就是——主題訂閱消息推送。
主題訂閱消息推送可以根據用戶習慣或讓用戶自定義感興趣主題,應用再根據需要撰寫主題消息,推送服務負責將消息可靠地傳送至正確的設備,從而實現精准推送。
例如,某個天氣預報應用的用戶可選擇加入“X市天氣”主題,並接收關於本地天氣的通知。
華為主題訂閱消息推送服務具有穩定、及時、高效的特點,多種推送樣式、自動推送通知、Deep linking能夠助力應用精准觸達用戶,有效提升用戶活躍度和粘度。
接下來,我們詳細解析如何集成華為主題訂閱消息推送服務。
一、整體開發流程
Step1:應用App主題訂閱;
Step2:向訂閱主題的用戶群發送消息;
Step3:驗證主題訂閱消息成功送達。
服務端主題訂閱推送消息交互流程圖
主題訂閱有兩種實現方式:App客戶端主題訂閱和服務端主題訂閱。本文將分別詳細介紹這兩種訂閱方式的實現步驟及代碼。
二、集成關鍵步驟說明和代碼實現
(一)客戶端主題訂閱
客戶端主題訂閱代碼實現:
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端測自定義訂閱界面:
主題訂閱取消代碼實現:
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端測自定義取消訂閱界面:
(二)服務端主題訂閱
1、獲取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請求消息實戰演示:
2、主題訂閱與退訂。服務器調用服務端主題訂閱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客戶端測展示收到的推送消息:
三、主題訂閱消息注意事項
-
客戶端應用可以訂閱任何現有主題,也可創建新主題。當客戶端應用訂閱新的主題名稱尚不存在時,推送服務會使用這個名稱創建一個新主題,隨后任何客戶端都可訂閱該主題。
-
推送服務端給您提供了基本的主題管理API,支持一次1000個以內的Token訂閱或者退訂某個主題,同時每個應用最多只能存在2000個不同的主題。
-
主題與Token的訂閱關系生效需等待一分鍾,待訂閱關系生效后,可以通過指向Topic或者組合Topic條件的方式實現消息批量發送。
>>獲取開發指導文檔
>>參與開發者討論請到CSDN社區或者Reddit社區
>>下載demo和示例代碼請到Github或者Gitee
>>解決集成問題請到Stack Overflow
原文鏈接:https://developer.huawei.com/...
原作者:胡椒