主題訂閱消息推送,讓用戶再也不錯太重要信息

現今智能終端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官方論壇
>>華爲推送服務開源倉庫地址:GitHubGitee

點擊右上角頭像右方的關注,第一時間瞭解華爲移動服務最新技術~