现今智能终端 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.hua…),获取利用级鉴权凭证 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…[appid]/topic:subscribe
(2)主题勾销订阅接口:
https://push-api.cloud.huawei…[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/…
原作者:胡椒