【安卓】主题订阅推送助力双十一预约抢购

主题订阅推送助力双十一预约抢购

华为开发者论坛发布于 2020-11-24

1.前言

主题订阅推送是指给订阅了不同主题的用户推送不同的消息,比如摄影、运动、美食等。为了提高用户活跃以及留存,我们希望根据用户的关注主题,推送不同的消息,比如,关注了运动的用户,我们推送运动相关的资讯,做到推送因人而异,推送用户真正感兴趣的消息。

2.业务背景介绍

双十一各家电商平台都推出了各种预约抢购活动(如下图所示),商家借助推送能够及时的把优惠信息送到用户的手机里,但不是所有的用户都对商品感兴趣,铺天盖地的推送反而会让用户产生反感,主题推送让用户自己选择感兴趣的商品,做到精准及时的推送。

【安卓】主题订阅推送助力双十一预约抢购

3.整体流程

【安卓】主题订阅推送助力双十一预约抢购

4.集成关键步骤说明和代码

(1)集成push sdk

Push sdk的集成文档上有详细的说明这里不做展开,详情可以参考https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/service-introduction-0000001050040060-V5

(2)配置自动初始化token

配置自动初始化后,每次打开应用token就会从onNewToken回调返回,主题推送不依赖token来进行推送,但端测仍然要首先获取token。

<meta-data

android:name="push_kit_auto_init_enabled"

android:value="true"/>

(3)把商品的id作为topic

用户点击预约抢购时,调用subscribe方法订阅主题

/**

* to subscribe to topics in asynchronous mode.

*/

private void addTopic(String topic) {

try {

HmsMessaging.getInstance(MainActivity2.this)

.subscribe(topic)

.addOnCompleteListener(new OnCompleteListener<Void>() {

@Override

public void onComplete(Task<Void> task) {

if (task.isSuccessful()) {

Log.i(TAG, "subscribe Complete");

changToCancelAppointment();

isAppointment = true;

showLog("subscribe successful");

} else {

isAppointment = false;

changeToAppointment();

showLog("subscribe failed: ret=" + task.getException().getMessage());

}

}

});

} catch (Exception e) {

isAppointment = false;

changeToAppointment();

showLog("subscribe failed: exception=" + e.getMessage());

}

}

(4)服务端调用下行消息接口
用商品的topic推送消息,下面用postman来模拟发送消息推送报文如下:

(5)当一个用户预约了一款手表的预售,他可能就会对相同价位相同款式的其他手表有购买需求,我们可以将这几款手表的预售信息作为一组推送给用户,通过condition组合"condition": "'watch123456' in topics || 'watch321654' in topics || 'watch321684' in topics" 用户如果订阅了watch123456 watch32165 watch321684这三款手表中的一个,另外两款手表的发售信息也会推送给用户。

(6)当用户取消预约这款手表的发售时,可以调用unsubscribe方法取消预订,取消后就不会再接收这款手表的发售信息

 /**

* to unsubscribe to topics in asynchronous mode.

*/

private void deleteTopic(String topic) {

try {

HmsMessaging.getInstance(MainActivity2.this)

.unsubscribe(topic)

.addOnCompleteListener(new OnCompleteListener<Void>() {

@Override

public void onComplete(Task<Void> task) {

if (task.isSuccessful()) {

showLog("unsubscribe successful");

changeToAppointment();

isAppointment = false;

} else {

isAppointment = true;

showLog("unsubscribe failed: ret=" + task.getException().getMessage());

changToCancelAppointment();

}

}

});

} catch (Exception e) {

showLog("unsubscribe failed: exception=" + e.getMessage());

isAppointment = true;

changeToAppointment();

}

}

5.效果展示

【安卓】主题订阅推送助力双十一预约抢购

6.其他

主题消息传递不限制每个主题的订阅数。但是,Push Kit有如下限制:

(1)一个应用实例不可订阅超过2000个主题。

(2)在EMUI 10.0以上的华为设备要求HMS Core(APK)的版本不低于3.0.0。低于EMUI 10.0的华为设备上要求HMS Core(APK)的版本不低于4.0.3,高版本的HMS Core(APK)补齐了低版本EMUI缺失的功能。

(3)同时进行推送的主题数,不能超过100个。


原文链接:
https://developer.huawei.com/consumer/cn/forum/topic/0204404702328700205?fid=18

作者:胡椒

android

阅读 1.9k发布于 2020-11-24

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议


华为开发者论坛

华为开发者论坛是一个为开发者提供信息传播、开发交流、技术分享的交流空间。开发者可以在此获取技术干...

avatar

华为开发者论坛

华为开发者论坛是一个为开发者提供信息传播、开发交流、技术分享的交流空间。开发者可以在此获取技术干货、华为源码开放、HMS最新活动等信息,欢迎大家来交流分享!

291 声望

24 粉丝

0 条评论

得票时间

avatar

华为开发者论坛

华为开发者论坛是一个为开发者提供信息传播、开发交流、技术分享的交流空间。开发者可以在此获取技术干货、华为源码开放、HMS最新活动等信息,欢迎大家来交流分享!

291 声望

24 粉丝

宣传栏

1.前言

主题订阅推送是指给订阅了不同主题的用户推送不同的消息,比如摄影、运动、美食等。为了提高用户活跃以及留存,我们希望根据用户的关注主题,推送不同的消息,比如,关注了运动的用户,我们推送运动相关的资讯,做到推送因人而异,推送用户真正感兴趣的消息。

2.业务背景介绍

双十一各家电商平台都推出了各种预约抢购活动(如下图所示),商家借助推送能够及时的把优惠信息送到用户的手机里,但不是所有的用户都对商品感兴趣,铺天盖地的推送反而会让用户产生反感,主题推送让用户自己选择感兴趣的商品,做到精准及时的推送。

【安卓】主题订阅推送助力双十一预约抢购

3.整体流程

【安卓】主题订阅推送助力双十一预约抢购

4.集成关键步骤说明和代码

(1)集成push sdk

Push sdk的集成文档上有详细的说明这里不做展开,详情可以参考https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/service-introduction-0000001050040060-V5

(2)配置自动初始化token

配置自动初始化后,每次打开应用token就会从onNewToken回调返回,主题推送不依赖token来进行推送,但端测仍然要首先获取token。

<meta-data

android:name="push_kit_auto_init_enabled"

android:value="true"/>

(3)把商品的id作为topic

用户点击预约抢购时,调用subscribe方法订阅主题

/**

* to subscribe to topics in asynchronous mode.

*/

private void addTopic(String topic) {

try {

HmsMessaging.getInstance(MainActivity2.this)

.subscribe(topic)

.addOnCompleteListener(new OnCompleteListener<Void>() {

@Override

public void onComplete(Task<Void> task) {

if (task.isSuccessful()) {

Log.i(TAG, "subscribe Complete");

changToCancelAppointment();

isAppointment = true;

showLog("subscribe successful");

} else {

isAppointment = false;

changeToAppointment();

showLog("subscribe failed: ret=" + task.getException().getMessage());

}

}

});

} catch (Exception e) {

isAppointment = false;

changeToAppointment();

showLog("subscribe failed: exception=" + e.getMessage());

}

}

(4)服务端调用下行消息接口
用商品的topic推送消息,下面用postman来模拟发送消息推送报文如下:

(5)当一个用户预约了一款手表的预售,他可能就会对相同价位相同款式的其他手表有购买需求,我们可以将这几款手表的预售信息作为一组推送给用户,通过condition组合"condition": "'watch123456' in topics || 'watch321654' in topics || 'watch321684' in topics" 用户如果订阅了watch123456 watch32165 watch321684这三款手表中的一个,另外两款手表的发售信息也会推送给用户。

(6)当用户取消预约这款手表的发售时,可以调用unsubscribe方法取消预订,取消后就不会再接收这款手表的发售信息

 /**

* to unsubscribe to topics in asynchronous mode.

*/

private void deleteTopic(String topic) {

try {

HmsMessaging.getInstance(MainActivity2.this)

.unsubscribe(topic)

.addOnCompleteListener(new OnCompleteListener<Void>() {

@Override

public void onComplete(Task<Void> task) {

if (task.isSuccessful()) {

showLog("unsubscribe successful");

changeToAppointment();

isAppointment = false;

} else {

isAppointment = true;

showLog("unsubscribe failed: ret=" + task.getException().getMessage());

changToCancelAppointment();

}

}

});

} catch (Exception e) {

showLog("unsubscribe failed: exception=" + e.getMessage());

isAppointment = true;

changeToAppointment();

}

}

5.效果展示

【安卓】主题订阅推送助力双十一预约抢购

6.其他

主题消息传递不限制每个主题的订阅数。但是,Push Kit有如下限制:

(1)一个应用实例不可订阅超过2000个主题。

(2)在EMUI 10.0以上的华为设备要求HMS Core(APK)的版本不低于3.0.0。低于EMUI 10.0的华为设备上要求HMS Core(APK)的版本不低于4.0.3,高版本的HMS Core(APK)补齐了低版本EMUI缺失的功能。

(3)同时进行推送的主题数,不能超过100个。


原文链接:
https://developer.huawei.com/consumer/cn/forum/topic/0204404702328700205?fid=18

作者:胡椒

以上是 【安卓】主题订阅推送助力双十一预约抢购 的全部内容, 来源链接: utcz.com/a/105180.html

回到顶部