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. ApacheCN jQuery 译文集 20211121 更新

    创建 jQueryMobile 移动应用 零.序言 一.jQueryMobile 原型制作 二.jQuery Mobile 网站 三.分析.长表单和前端验证 四.QR 码.地理位置.谷歌地图 API ...

  2. 关于老Windows平板电脑睡眠状态下无法开机(睡死)的问题及解决方案

    1.简述 前几天我从闲鱼上淘了一个二手Windows平板, 拿来上课记笔记用. 型号是联想的Thinkpad Helix 2nd, 2015年出产. cpu是酷睿m-5y71超低功耗处理器, TDP只 ...

  3. Java 书写规范简单整理

    本文带有华为Logo的PPT图片,引自:华为云课堂 目录 Java基础语句使用规范 选择结构 switch 默认要有default分支 注意break的使用 如果使用枚举,并且选项已全部列出,可以没有 ...

  4. JAVA多线程学习十五 - 阻塞队列应用

    一.类相关属性 接口BlockingQueue<E>定义: public interface BlockingQueue<E> extends Queue<E> { ...

  5. iOS9新特性之常见关键字

    /* nullable:1.怎么使用(语法) 2.什么时候使用(作用) nullable作用:可能为空 nullable 语法1 @property (nonatomic, strong, nulla ...

  6. Keka 官方网址 http://www.kekaosx.com/

    Keka 官方网址 http://www.kekaosx.com/zh-cn/

  7. HOOK API(四) —— 进程防终止

    0x00        前言 这算是一个实战吧,做的一个应用需要实现进程的防终止保护,查了相关资料后决定用HOOK API的方式实现.起初学习HOOK API的起因是因为要实现对剪切板的监控,后来面对 ...

  8. ReactiveCocoa 学习资料

    之前就有听说,感觉很强大,ReactiveCocoa更加被Mattt Thompson大神称为开启一个新Objective-C纪元.所以觉得非常有学习的必要了. 一些很好的学习资料: Reactive ...

  9. 实现redis哨兵,模拟master故障场景

    由于主从架构无法实现master和slave角色的自动切换,所以在发送master节点宕机时,redis主从复制无法实现自动的故障转移,即将slave 自动提升为新的master.因此,需要配置哨兵来 ...

  10. PHP和MySQL爱考的10道题

    PHP和MySQL爱考的10道题 来自<PHP程序员面试笔试宝典>,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. 一.如何进行数据库优化? 数 ...