HMS Core 推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道。开发者通过集成推送服务,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活跃度。

推送服务由两个部分构成:

  • 从云端到终端的消息推送通道:开发者可以通过推送服务,向客户端应用实时推送数据和消息。

  • 终端消息展示:位于通知中心、终端桌面横幅、终端锁屏等多种类型和样式的消息展示。

具体可以参考以下官方文档:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/service-introduction-0000001050040060?ha_source=hms1

在应用接入推送服务的过程中,开发者还向我们反映了一些隐私安全、报错、消息延迟等问题。这里小编进行了汇总分析,希望为开发者们提供参考、进一步提升服务质量。

1. 隐私安全问题

应用使用华为推送服务,库为“ com.huawei.hms:push:3.0.3.301 ”,上架华为应用市场后提示 :尊敬的开发者,您好!审核过程系统检测得出您的应用存在获取用户的软件安装列表敏感信息,因此需要在隐私政策内说明,如应用通过xx方式获取xx范围的软件安装列表信息,覆盖xx范围的用户并通过xx方式服务于xx功能。

具体可参考链接:

https://developer.huawei.com/consumer/cn/doc/distribution/app/FAQ-faq 第1.2的相关内容,最终以审核结果为准。

"stackTrace":["android.app.ApplicationPackageManager.getInstalledPackages(ApplicationPackageManager.java:886)","com.huawei.hms.aaid.c.a.a(AaidUtils.java:91)","com.huawei.hms.aaid.c.a.b(AaidUtils.java:141)","com.huawei.hms.aaid.HmsInstanceId.getId(HmsInstanceId.java:97)","com.huawei.hms.aaid.HmsInstanceId.getToken(HmsInstanceId.java:179)","

解决方式 : SDK 5.1.1.301 之前版本会通过getInstalledPackages方法读取应用列表,解决方式升级版本。

2. 桌面角标注意事项

1) add_num字段

支持:EMUI版本8.0.0(及以上)推送服务应用版本8.0.0(及以上)

set_num字段

支持:EMUI版本9.1.0(及以上)推送服务应用版本10.1.0(及以上)

2) 华为桌面角标开发

支持平台、系统版本:EMUI 4.1 及以上

桌面版本:6.3.29

支持设备:华为设备

3) 下发消息参数、add_num参数、integer类型

描述:应用角标累加数字非应用角标实际显示数字,为大于0小于100的整数。例如,某应用当前有N条未读消息,若add_num设置为3,则每发一次消息,应用角标显示的数字累加3,为N+3。

4) class参数、String参数、必选参数

描述:应用入口Activity类全路径。样例:com.example.hmstest.MainActivity

5) set_num参数、integer类型

描述:角标设置数字,大于等于0小于100的整数。例如,set_num设置为10,则不论发了多少次消息,应用角标显示的数字都是10。如果set_num与add_num同时存在时,以set_num为准。

(说明:发送消息同时设置应用角标数字,“class“必填,“add_num”和”set_num”参数选填。若“add_num”和“set_num”都设置为空,则应用角标数字默认加1。)

3. 消息延迟问题

有的开发者反应,用户延迟几分钟才能接收到应用的推送消息。针对该问题,由于华为推送消息量每日达百亿级,因此无法保证单条消息到达的实时性。官网有相关描述:充分保障通知栏消息的送达,十分钟在线到达率高达99%。感谢开发者们的理解与支持!

4. 收不到推送消息

消息可分为两种:通知栏消息收到后由通知栏展示;透传消息不在通知栏展示由onMessageReceived回调方法返回数据。开发者需要注意,首先确认发消息的类型,不要误把透传消息当成通知栏消息发送造成通知栏没有收到消息的假象。其次,是否使用了foreground_show 字段参数为 false,由onMessageReceived回调方法返回数据不会在通知栏展示。问题定位后,解决方法如下:

  1. 通知栏消息收不到
  • 查看是否关闭了应用允许通知、渠道通知开关等拦截消息开关。

  • 排查发消息与端侧token是否一致,尝试使用重新获取push token后下发消息。

  • 可在AGC平台选中推送服务、自助分析查询消息下发状态,也可以查询token是否可用。

  1. 透传消息收不到:确认应用是否存活。当应用是存活状态时,不管是前台或后台,下发后使用onMessageReceived回调方法返回数据,应用被杀都是收不到的。

5. 设置自定义铃声

1) 自定义渠道方式下,channel_id字段在应用的数据处理位置为中国区时无效。也就是说自定义渠道方式设置铃声不可行,直接使用sound字段进行设置即可。

2) 铃声资源必须放在应用的/res/raw路径下,支持的铃声格式包括MP3、WAV、MPEG等。

3) sound字段参数格式为:/raw/shake。

4) 使用sound字段需要在创建渠道前,渠道创建后使用无效,可以将应用卸载重装、清除请用数据后重新测试。

6. 通知亮屏

1) 确保亮屏打开开关,设置->通知中心->更多通知设置->通知亮屏提示。

2) 确保通知中心锁屏通知总开关是开启的,设置->通知中心->锁屏通知。

3) 确保应用通知渠道开关是开启的,设置->通知中心->您的应用->选择渠道->锁屏通知。

7. 检测出隐式PendingIntent的问题

目前此问题在6.3.0.302版本已全部处理,请开发者参考更新文档:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-app-version-0000001074227861?ha_source=hms1

8. 推送接口返回503

错误代码503是指流控限制。目前默认6000qps,建议每次发送的token数量不超过100,可以每次调用60,每秒调用100次。具体参照以下链接:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section196822541234?ha_source=hms1

9. 获取token时OnNewToke不回调

1) 排查是否有多个“service”继承HmsMessageService类,只能有一个类继承HmsMessageService。

2) 检查测试设备是否为EMUI10及以上版本,如果是,则不回调,直接在getToken方法中返回token。

3) 是否覆写onNewToken(String token, Bundle bundle)方法,Push SDK版本低于5.0.4.302,请覆写onNewToken(String token)方法。可以复写onTokenError方法查看是否有返回错误信息。

4) 若为EMUI10及以上版本,且配置了自动获取token,则需要检查配置是否正确,参考文档(自动初始化):https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-client-dev-0000001050042041#section13546121751811?ha_source=hms1

5) 检查manifest文件,是否注册您自己的“service”,该服务继承HmsMessageService类,用于接收Token。 参考文档(配置manifest.xml文件):https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-cfg-manifest-0000001050042037

6) 检查push开关是否打开:登录AppGallery Connect网站,

  • a. 开发-概览-右侧的齿轮小图标-API管理-打开Push服务。

  • b. 开发-增长服务-推送服务-点击开通,修改服务状态为已开通。

以上两种情况,如果是刚刚修改完,需要等待15分钟时间才能生效。

10. 错误码:907135000

在Service调用推送初始化:
public static void startPushService(Context c) {
context = c;
hwApi = new HuaweiApiClient.Builder(context)
.addApi(HuaweiPush.PUSH_API)
.addConnectionCallbacks(pushHw)
.addOnConnectionFailedListener(pushHw).build();
hwApi.connect();
}
连接有错误:@Override
public void onConnectionFailed(ConnectionResult result) {
PluginLog.i(TAG, "onConnectionFailed, ErrorCode: " + result.getErrorCode() );
}
输出:PushHw: onConnectionFailed, ErrorCode: 907135000

错误码907135000的排查步骤:

1) 请检查“agconnect-services.json”文件中的app_id、package_name参数是否与端侧一致。

2) 请检查“build.gradle”文件中证书签名是否配置。

3) 有可能是HMS Core(APK)缓存导致的,请卸载并重新更新HMS Core(APK),然后断开网络再连接,再打开应用。

4) 建议用华为终端先测试,华为推送会依赖HMS Core(APK),在华为手机上都会预装这个应用,非华为手机上没有预装。

5) 关于签名证书:你应用的签名文件和用你签名文件生成的SHA256指纹证书要匹配,而且项目中配置签名文件的地方也得和以上两个用的签名文件一致。

6) 检查接送文件位置,要在项目级的app目录下。

7) 在文件头apply plugin: 'com.android.application’下一行添加如下配置。

apply plugin: ‘com.huawei.agconnect’ (app模块build文件有没有加apply plugin。)

8) 手动在manifest加一下appid的值验证下是不是配置的问题。比如:

<meta-data
android:name=“com.huawei.hms.client.appid”
android:value=“102729671” />

9) 可能是配置混淆问题,可以参看:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-config-obfuscation-scripts-0000001050176973

欲了解更多HMS Core推送服务详情,请参阅:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/service-introduction-0000001050040060?ha_source=hms1

华为开发者联盟官网

获取开发指导文档

参与开发者讨论请到Reddit社区

下载demo和示例代码请到Github

解决集成问题请到Stack Overflow

了解更多详情>>

访问华为开发者联盟官网

获取开发指导文档

华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

【FAQ】接入HMS Core推送服务过程中一些常见问题总结的更多相关文章

  1. 【FAQ】接入HMS Core推送服务,服务端下发消息常见错误码原因分析及解决方法

    HMS Core推送服务支持开发者使用HTTPS协议接入Push服务端,可以从服务器发送下行消息给终端设备.这篇文章汇总了服务端下发消息最常见的6个错误码,并提供了原因分析和解决方法,有遇到类似问题的 ...

  2. 【FAQ】HMS Core推送服务与本地创建通知消息如何相互覆盖?

    我们知道,单独使用HMS Core推送服务或本地创建通知消息,都可以实现通知消息的覆盖,方式分别为: 1.本地创建通知消息(简称本地通知消息) 通过notificationManager.notify ...

  3. 如何使用Postman调试HMS Core推送接口?

    HMS Core推送服务支持开发者使用HTTPS协议接入Push服务端.Postman是一款接口测试工具,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果.Postma ...

  4. 【FAQ】干货满满,接入HMS Core应用内支付服务过程中一些常见问题总结(2)来啦

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.该服务支持客户端和服务端两种开发形式,具体可以参考官方文档 上次,我们分享和总 ...

  5. 接入WxPusher微信推送服务出现错误:Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

    背景 使用WxPusher微信推送服务 ,可以及时的将服务的一些运行异常信息,发送到自己的微信上,方便了解服务的运行状态(PS:这个服务是免费的). 你可以在这里看到WxPusher微信推送服务的接入 ...

  6. 【FAQ】接入HMS Core应用内支付服务过程中一些常见问题总结

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即 ...

  7. Android Notification实现推送消息过程中接受到消息端有声音及震动及亮屏提示

    在Android Notification状态栏通知一文中,简单实现了消息的推送效果,这里就接着上文说一下,当用户接受到消息时的提示效果 // 5-增加震动及声音及亮屏 notification.de ...

  8. Netty系列之Netty百万级推送服务设计要点

    1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...

  9. Netty_Netty系列之Netty百万级推送服务设计要点

    1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...

随机推荐

  1. AI算法测评(二)--算法测试流程

    根据算法测试过程中遇到的一些问题和管理规范, 梳理出算法测试工作需要关注的一些点: 编号 名称 描述信息 备注 1 明确算法测试需求 明确测试目的 明确测试需求, 确认测试需要的数据及场景 明确算法服 ...

  2. 使用 Element UI Select 组件的 value-key 属性,让绑定值可以为一个对象

    EsunR 2019-11-07 12:14:42  12264  收藏 6 分类专栏: Vue 文章标签: element-ui 版权 当我们使用 Elemet UI 的选择组件进行多选时,Sele ...

  3. 用Java中的File类模拟实现对系统文件的增删改查效果

    码字不易,三连支持一波吧 IO操作向来是各大语言的热区,而对文件的操作也是重中之重. 那么在Java中也给我们提供了很多关于文件操作的类.今天我就用一个比较基本的File类来模拟实现对文件的增删改查效 ...

  4. docker中run和start的区别?

    docker run 后面指定的是一个镜像 而docker start指定的是一个容器 docker run是利用镜像生成容器,并启动容器,而docker start是启动一个之前生成过的容器

  5. 5个不常提及的HTML技巧

    2021年你需要知道的HTML标签和属性 Web开发人员都在广泛的使用HTML.无论你使用什么框架或者选择哪个后端语言,框架在变,但是HTML始终如一.尽管被广泛使用,但还是有一些标签或者属性是大部分 ...

  6. 利用脚本快速执行Dockerfile以及docker镜像的启停与删除

    `关于脚本:` 'sh setup.sh build' # 将Dockerfile创建成镜像 'sh setup.sh run' # 启动build创建好的镜像,放到后台运行 'sh setup.sh ...

  7. 常用模块(Day25-Day28)

    模块分为三种: 1.内置模块:python安装时自带的. 2.扩展模块:别人写的,需要安装之后可以直接使用,如django,tornado等. 3.自定义模块:自己写的模块. 序列化模块 序列指字符串 ...

  8. 在 .NET 平台使用 ReflectionDynamicObject 优化反射调用代码

    基于封装的原则,API 的设计者会将部分成员(属性.字段.方法等)隐藏以保证健壮性.但总有需要直接访问这些私有成员的情况. 为了访问一个类型的私有成员,除了更改 API 设计还有就是使用反射技术: p ...

  9. k8s基础环境配置:基于CentOS7.9

    k8s基础环境配置:基于CentOS7.9 wmware15安装centos7.9:https://www.cnblogs.com/uncleyong/p/15261742.html 1.配置静态ip ...

  10. IP网络主动测评系统——IT运维人员的好帮手

    一.前 言 随着计算机网络的普及和快速发展,互联网已经融入到人们的衣食住行等方方面 面,如工作.购物.音视频聊天.视频会议.朋友圈.抖音.在线网游.网络电影 电视等.毫不夸张地说,现如今大部分人的绝大 ...