ITPub博客

首页 > 移动开发 > 移动测试 > 想让用户“一见钟情”,你需要主题订阅消息精准推送

想让用户“一见钟情”,你需要主题订阅消息精准推送

原创 移动测试 作者:华为开发者论坛 时间:2021-08-11 16:30:10 0 删除 编辑

现今智能终端 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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-04-21

  • 博文量
    402
  • 访问量
    668413