安卓端华为推送集成笔记

华为推送集成笔记

华为推送
示例代码
https://developer.huawei.com/consumer/cn/doc/development/HMS-Examples/push-android-sample
HUAWEI HMS Core
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-change
开发工具
https://developer.huawei.com/consumer/cn/doc/development/Tools-Guides/30935655
反馈与求助
https://developer.huawei.com/consumer/cn/doc/development/Tools-Guides/19866081
https://developer.huawei.com/consumer/cn/doc/development/Tools-Guides/07003360

keytool -list -v -keystore

证书指纹:
MD5: 86:E9:51:B4:25:05:FD:C6:C9:EC:13:5E:E7:7F:BF:20
SHA1: DC:4B:8F:2A:3F:C9:79:CC:02:04:65:B2:36:3D:C6:85:1C:E0:AF:22
SHA256: F6:92:67:B4:6E:E9:72:27:89:94:1B:39:73:7B:84:D6:EE:D7:52:EB:C3:B5:29:82:2F:F7:8C:9C:D9:7F:0F:3F
签名算法名称: SHA256withRSA
F6:92:67:B4:6E:E9:72:27:89:94:1B:39:73:7B:84:D6:EE:D7:52:EB:C3:B5:29:82:2F:F7:8C:9C:D9:7F:0F:3F

应用详情
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/myProject/101704409/97458334310914890

推送服务
https://developer.huawei.com/consumer/cn/hms/huawei-pushkit
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-introduction

推送服务说明
HUAWEI HMS Core集成准备
https://developer.huawei.com/consumer/cn/codelab/HMSPushKit/index.html#0

错误码
https://developer.huawei.com/consumer/cn/doc/development/HMS-References/hms-error-code
安卓推送api
https://developer.huawei.com/consumer/cn/doc/development/HMS-References/push-HmsMessageService-cls#onMessageReceived

建议的最佳使用实践

1、应用不要固定判断Push Token长度,因为后续长度可变。

2、应用的Push Token要定期更新(建议应用每次启动的时候都获取Token,如果发现和上次取到的不同,则上报到自己的服务器)。

3、请勿用Token跟踪标记用户。

可以调用HmsInstanceId.deleteToken接

但是建议开发者不要依赖deleteToken接口,如果开发者要实现不接收Push消息,可以自行将开发者应用服务器端的Token状态设置为失效状态,并且在推送消息时判断Token失效就不进行推送,避免频繁的向服务器申请token。

注意:
HMS Core(APK)的版本不低于3.0.0。

通知栏支持
1、华为设备上该功能支持的EMUI版本不低于EMUI 5.1。

2.5 点击通知消息
2、通过通知消息传递数据给应用需要推送服务App版本为10.0.0及以上。

2.5 点击通知消息
关于通知消息,开发者可以自定义点击消息的动作,包括:打开App首页、打开特定URL、打开自定义富媒体消息、打开自定义App页面。其中打开App首页与自定义App页面需要开发者端云协同开发来完成,下面我们讲下如何实现这两种动作并从服务端接收数据。

注意:

1、点击动作触发打开应用首页或者自定义App页面,都是通过跨应用启动Activity的方式来实现,需要保证要拉起的目标Activity的exported属性为true,即目标Activity要对外界公开,并且无权限保护,这样才能启动成功。

2、通过通知消息传递数据给应用需要推送服务App版本为10.0.0及以上。

华为商城v9.2.0.303 2019年05月31日
https://www.wandoujia.com/apps/785835/history_v90200303

2.5.1 打开自定义App页面
1、intent参数生成
2、App服务端消息体中指定intent值
3、客户端AndroidManifest.xml文件注册待启动的Activity类
4、在自定义Activity类中接收数据

具体实现参考打开App首页中的接收数据示例代码。

注意:
1、支持action参数需要EMUI 10.0.0以上,推送服务App版本为10.1.0及以上。

2、Push SDK 4.0版本支持将action参数与intent参数通过SDK提供的RemoteMessage.Notification.getClickAction()、RemoteMessage.Notification.getIntentUri()方法直接透传给应用,由应用自己处理。

2.5.2 打开App首页
通过如下3步实现打开App首页并携带数据给App。

其他资料

华为推送服务开放能力合集,提供了获取应用的设备匿名标识(AAID)以及接入华为推送服务所需的令牌(Token)的公开类和方法。
AAID (Application Anonymous Device Identifier):应用匿名设备标识符,标识运行在移动智能终端设备上的应用实例,只有该应用实例才能访问该标识符,它只存在于应用的安装期。与无法重置的设备级硬件ID相比,AAID具有更好的隐私权属性。
AAID具有以下特性:
1、匿名化、无隐私风险:AAID和已有的任何标识符都不关联,并且每个应用只能访问自己的AAID;
2、同一个设备上,同一个开发者的多个应用,AAID取值不同;
3、同一个设备上,不同开发者的应用,AAID取值不同;
4、不同设备上,同一个开发者的应用,AAID取值不同;
5、不同设备上,不同开发者的应用,AAID取值不同;
AAID会在包括但不限于下述场景中发生变化:
1、APP卸载重装;
2、APP调用删除AAID接口;
3、用户恢复出厂设置;
4、用户清除应用数据;

受限说明
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-restrictions

token
ALumdhlVZYi4fafEDahqLWbEpgY4oNclM7WhkYEeeNpDnXICVcMg-AONUeUDOv7B4NeKLx-67wmgTy2Mt8JSv7BT3xmxhDHcWDgafoyNHRh5gy7s3dEyu0AD2Sa0fdhxyQ

透传
需要app处于活动状态,信息展示由开发者处理
通知
由sdk展示通知栏消息,app可以离线,
透传消息是指当小米推送服务客户端SDK接收到消息之后,直接把消息通过回调方法发送给应用,不做任何处理;

通知栏消息是指在设备接收到消息之后,首先由小米推送服务SDK弹出标准安卓通知栏通知,在用户点击通知栏之后,激活应用。
https://blog.csdn.net/zhiyi2010/article/details/50845456

通知消息:按规定的通知格式发送消息,不需应用处理通知显示;透传消息:自定义通知格式,消息内容会传递给应用,由应用处理通知显示

通过键值对 透传消息可以收到回调

2020-05-21 15:37:32.245 25576-25576/com.chinamobile.cmss.pa I/PushDemoLog: onMessageReceived is called
2020-05-21 15:37:32.245 25576-25576/com.chinamobile.cmss.pa I/PushDemoLog: getCollapseKey: null
getData: {“must”:“123”}
getFrom: 101704409
getTo: null
getMessageId: 6093046
getOriginalUrgency: 2
getUrgency: 2
getSendTime: 0
getMessageType: null
getTtl: 2147483647
2020-05-21 15:37:32.247 25576-25576/com.chinamobile.cmss.pa I/PushDemoLog: getImageUrl: null
getTitle: null
getTitleLocalizationKey: null
getTitleLocalizationArgs: null
getBody: null
getBodyLocalizationKey: null
getBodyLocalizationArgs: null
getIcon: null
getSound: null
getTag: null
getColor: null
getClickAction: null
getChannelId:

通知栏消息

  1. 选择打开应用时,需设置App页面、自定义键值对(非必填)。

a. 设置App页面,包括首页、自定义action页面和自定义intentUri页面。
b. 设置自定义键值对,由客户端App自己解析处理。

2.2 安卓透传消息
设置消息内容
透传消息内容可以通过两种方式来设置,键值对和自定义参数。

  1. 键值对,如下图示,可以添加多组键值对。
  2. 自定义参数,可以是普通的字符串也可以是Json对象形式的字符串,最大长度1024。

问题通知类消息,没有收到广播
透传消息,能收到广播,但没有通知

华为推送集成注意事项

https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-basic-capability#h3-1575619839601
0 注销Push Token

低于EMUI10.0的华为设备上,getToken接口如果返回为空,确保Push服务开通的情况下,结果后续以onNewToken接口返回。

服务端识别token过期后刷新token,以onNewToken接口返回。
集成HMS SDK最新版本需要满足HMS Core(APK)的版本不低于3.0.0
Token发生变化时或者EMUI版本低于10.0以 onNewToken 方法返回

1 显示/关闭通知栏消息 调用HmsMessaging.turnOnPush或者HmsMessaging.turnOffPush接口
HmsMessaging.getInstance(context).turnOnPush().addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Task task) {
if (task.isSuccessful()) {
Log.i(TAG, “turnOnPush Complete”);
} else {
Log.e(TAG, “turnOnPush failed: ret=” + task.getException().getMessage());
}
}
});

2 点击通知消息
需要保证要拉起的目标Activity的exported属性为true,即目标Activity要对外界公开,并且无权限保护,这样才能启动成功。
App版本为10.0.0及以上。
打开自定义App页面

实现方式
1intent参数生成
{
“message”: {
“data”: “{‘score’:‘7’,‘time’: ‘16:42’}”,
“notification”: {
“title”: “message title”,
“body”: “message body”
},
“android”: {
“data”:"{‘androidData’:‘7’,‘time’:‘16:42’}",
“notification”: {
“click_action”: {
“type”: 1,
“intent”: “intent://com.huawei.codelabpush/deeplink?#Intent;scheme=pushscheme;launchFlags=0x4000000;i.age=180;S.name=abc;end”
}
}
},
“token”: [
“pushtoken1”
]
}
}

2 指定action参数
支持action参数需要EMUI 10.0.0以上,推送服务App版本为10.1.0及以上。
服务器
{
“message”: {
“data”: “{‘score’: ‘7’,‘time’: ‘16:42’}”,
“notification”: {
“title”: “message title”,
“body”: “message body”
},
“android”: {
“data”: “{‘androidData’: ‘7’,‘time’: ‘16:42’}”,
“notification”: {
“click_action”: {
“type”: 1,
“action”: “com.huawei.codelabpush.intent.action.test”
}
}
},
“token”: [
“pushtoken1”
]
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章