想讓用戶“一見鍾情”,你需要主題訂閱消息精准推送


現今智能終端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/...
原作者:胡椒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM