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

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee

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

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

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

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

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

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

  3. 苹果微信推送服务器错误,接入WxPusher微信推送服务出现错误:Content type application/x...

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

  4. HMS 华为推送服务 推送绑定回执

    绑定过程遇到的错误 回调地址需要返回信息 回执地址请求失败,响应码不为200 OK 推送服务-下行消息回执 https://developer.huawei.com/consumer/cn/doc/d ...

  5. 苹果推送服务(APNs)中文文档

    工作中需要用到APNs服务,所以打算将APNs的官方文档翻译出来,供有需求的朋友一起参考,水平有限,难免出错,还望不吝赐教. 总览 本地通知和远程通知 本地通知和远程通知就是所谓的两种不同类型的通知, ...

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

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

  7. 如何用 Netty 设计一个百万级推送服务?

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

  8. 基于Netty的百万级推送服务设计要点

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

  9. Netty学习总结(3)——Netty百万级推送服务

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

最新文章

  1. 26/100. Min Stack
  2. npm安装教程 集成npm webpack vue-cli
  3. Oracle行列转换小结
  4. Java进阶:mysql的事务隔离级别面试题
  5. c语言2048项目报告,c语言----项目_小游戏2048
  6. 详解loadrunner的think time
  7. excel清空sheet内容 poi_java – 从POI中的WorkBook中删除工作表
  8. 第 13 章 外观模式
  9. iOS tableview嵌套collectionview
  10. 服务器中有大量CLOSE_WAIT的连接
  11. 云主机前景几何,风萧萧兮!
  12. Java 2实用教程(第五版)
  13. UVM组件(以APB协议为例)——UVM
  14. VS2015 C#程序打包成.exe之installshield使用教程
  15. python可以爬wind的数据_Python:爬取上市公司公告-Wind-CSMAR
  16. MySQL创建网吧管理系统_java网吧信息管理系统
  17. 推荐一些可以获取免费的国外的原版书籍(电子版)网站
  18. 查看进程的发起程序linux,Linux挂载iSCSI设备
  19. 计算机管理格式化没有顺利完成,TF存储卡“格式化没有顺利完成”问题解决的方法...
  20. Gin源码之gin.Context结构体及其方法

热门文章

  1. C++错误 C1189
  2. 学生评语管理系统软件测试,学生评语管理系统测试版
  3. UE4 角色沿着样条线移动
  4. 15幅非常有创意的影子摄影作品欣赏
  5. MYSQL的函数与Navicat的使用
  6. 使用Navicat导入.sql文件(适合新手)
  7. 微控制器编程技术c语言,1.单片机C语言编程技术分析.pptx
  8. Excel按列合并相同相邻单元格和拆分单元格
  9. android 按钮添加图片并靠左显示
  10. 幸福密码:与原生家庭和解后,才能直面真正的自己