想讓使用者“一見鍾情”,你需要主題訂閱訊息精準推送
現今智慧終端 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。 呼叫華為帳號伺服器的介面( ),獲取應用級鑑權憑證 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/consumer/cn/forum/topic/0202580456687810024?fid=18
原作者:胡椒
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2786453/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小程式訊息推送訂閱
- 主題訂閱推送助力雙十一預約搶購
- 小程式訂閱訊息推送(含原始碼)java實現小程式推送,springboo原始碼JavaSpring
- 手把手帶你接入小程式訂閱訊息
- 小程式長期訂閱訊息的支援問題
- 小程式傳送訂閱訊息
- 利用redis的hash結構搭建訊息服務(發訊息,訂閱訊息,消費訊息,退訂)Redis
- Feedly – 超好用的 RSS 免費訂閱服務完整攻略,讓你隨時接收訂閱網站的最新訊息 - TechMoon 科技月球網站
- Redis的訊息釋出和訂閱Redis
- 使用Java接入小程式訂閱訊息!Java
- Redis實現訊息釋出訂閱Redis
- 最新研究怎樣才算一見鍾情?
- 釋出於訂閱訊息系統-KafkaKafka
- 詳談:Redis事務和訊息訂閱Redis
- 使用Spring Data Redis 釋出訂閱訊息SpringRedis
- Redis 訂閱 + swoole_websocket 推送RedisWeb
- SpringBoot+Redis 實現訊息訂閱釋出Spring BootRedis
- HMS Core地理圍欄能力助你實現指定範圍人群的精準訊息推送
- 想要更精準的小程式模版訊息推送?我們來幫你實現
- 輕鬆上手 PHP + RabbitMQ 訊息釋出與訂閱PHPMQ
- vue - Vue腳手架/訊息訂閱與釋出Vue
- 一起來實現單使用者登入 —— 訊息推送
- C#使用MQTT通訊協議釋出訂閱主題報文C#MQQT協議
- Rocket MQ 的三種訊息傳送(同步、非同步、單向)和訊息訂閱MQ非同步
- java從SQS訂閱訊息 的demo, 要求保證訊息可靠投遞的例子Java
- js訊息訂閱和釋出實現元件之間通訊JS元件
- 微信服務號訂閱訊息灰度測試的坑
- 訂閱訊息迴流率做到50%是一個怎樣的體驗?
- Redis 釋出訂閱模式:原理拆解並實現一個訊息佇列Redis模式佇列
- 你知道如何在小程式中推送模板訊息?
- 語音通知簡訊,讓訊息更及時、準確
- 基於Redis訊息的訂閱釋出應用場景Redis
- ZMQ釋出-訂閱模式踩坑之——訊息丟失部分MQ模式
- 如何用 Redis 做實時訂閱推送的?Redis
- ROS訊息訂閱監聽 rospy.Subscriber 訂閱監聽darknet_ros 中yolo python實現訂閱/darknet_ros/bounding_boxes topicROSYOLOPython
- 如果讓你來設計訊息加密加密
- Android之訊息推送原理Android
- workerman 實現訊息推送