华为推送集成文档1

华为推送
示例代码
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 方法返回

-----------------注意事项----------------------
通过通知消息传递数据给应用需要推送服务App版本为10.0.0及以上。

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

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

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"
        ]
    }
}


老手机token
0A000004FF31CE70300005693600CN01



通过action收到的数据
05-22 11:02:35.436 10148-10148/com.chinamobile.cmss.pa I/PushDemoLog: getHuaWeiToken1
05-22 11:02:37.126 10148-10195/com.chinamobile.cmss.pa I/PushDemoLog: get token:
05-22 11:02:37.266 10148-10148/com.chinamobile.cmss.pa I/PushDemoLog: received refresh token:0A000004FF31CE70300005693600CN01
05-22 11:02:37.266 10148-10148/com.chinamobile.cmss.pa I/PushDemoLog: sending token to server. token:0A000004FF31CE70300005693600CN01
05-22 11:02:37.406 10148-10148/com.chinamobile.cmss.pa I/PushDemoLog: received refresh token:0A000004FF31CE70300005693600CN01
05-22 11:02:37.406 10148-10148/com.chinamobile.cmss.pa I/PushDemoLog: sending token to server. token:0A000004FF31CE70300005693600CN01
05-22 11:04:19.636 10148-10148/com.chinamobile.cmss.pa I/PushDemoLog: received refresh token:0A000004FF31CE70300005693600CN01
05-22 11:04:19.636 10148-10148/com.chinamobile.cmss.pa I/PushDemoLog: sending token to server. token:0A000004FF31CE70300005693600CN01
05-22 11:05:39.246 10148-10148/com.chinamobile.cmss.pa I/PushDemoLog: receive data from push, msgId = null, cmd = null, notifyId = -1



推送消息处理页面
PushDetailActivity
 
 基础集成


集成HMS SDK最新版本需要满足HMS Core(APK)的版本不低于3.0.0。如果低于3.0.0版本,当应用有前台界面时HMS SDK会提示用户升级HMS Core(APK)为最新版本,此时HmsInstanceId.getInstance的入参必须传入Activity类实例;当应用是后台应用时,如果开发者不想弹出引导升级的页面时,可以传入非Activity类型的Context类实例。

HMS Core(APK)的版本不低于3.0.0。
集成HMS SDK最新版本需要满足HMS Core(APK)的版本不低于3.0.0
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-basic-capability

EMUI

固件版本    系统版本    最新版本    发布日期
Emotion UI 1.x  Android 2.3-4.3 1.6 2012年7月30日
Emotion UI 2.x  Android 4.2-4.4 2.3 2013年12月
EMUI 3.x    Android 4.4-5.1 3.1 2014年9月4日
EMUI 4.x    Android 6.0 4.1 2015年11月
EMUI 5.x    Android 7.0 5.1 2017年3月24日
EMUI 8.x    Android 8.0-8.1 8.2 2017年10月16日
EMUI 9.x    Android 9.0 9.1 2018年10月26日
EMUI 10.x   Android 10.0    10.1    2020年3月26日


华为送达率说明:
HUAWEI Push Kit 致力于提供安全可靠的消息发送通道,保障消息成功送达。此外,以下非通道因素也直接影响消息的送达情况,主要影响因素有:
●  终端设备是否在线
如果设备离线,Push平台会缓存消息,待用户上线后,再次将消息投递给用户。Push平台只缓存一次用户的消息,如果用户在线后还发不通,Push平台不再缓存。
●  用户手机上集成Push SDK的应用是否被卸载
●  网络状况是否稳定
●  终端手机的安全控制策略
●  不同厂商终端设备对HMS Core(APK)的支持度
●  透传消息送达依赖应用进程是否存在

华为Push以下类数据的说明:
1缓存消息和离线消息内容,开发者可以自行设置存储期限,最长不超过15天;
2消息下发日志记录,存储1个月,开发者不能设置;

Android 获取手机系统(小米、华为、魅族)
https://blog.csdn.net/jin_qing/article/details/53087164

华为创建项目
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-get-started#createapp

错误码
https://developer.huawei.com/consumer/en/doc/development/HMS-References/push-ErrorEnum4


你可能感兴趣的:(华为推送)