当前位置: 首页 > 后端技术 > Java

[FAQ]接入HMSCore推送服务过程中的一些常见问题汇总

时间:2023-04-01 14:47:00 Java

HMSCore推送服务(PushKit)是华为提供的消息推送平台,建立从云端到终端的消息推送通道.通过集成推送服务,开发者可以实时向客户端应用推送消息,建立良好的用户关系,提高用户的认知度和活跃度。推送服务由两部分组成:云端到终端的消息推送通道:开发者可以通过推送服务向客户端应用实时推送数据和消息。终端消息展示:通知中心、终端桌面banner、终端锁屏等多种类型和风格的消息展示,具体请参考以下官方文档:https://developer.huawei.com/...在应用接入推送服务的过程中,开发者也向我们反馈了一些隐私安全、报错、消息延迟等问题。在此,小编进行了总结分析,希望能为开发者提供参考,进一步提升服务质量。1、有隐私安全问题的应用使用华为推送服务,库为“com.huawei.hms:push:3.0.3.301”。审核过程中,系统检测到您的应用存在获取用户软件安装列表的敏感信息。因此,需要在隐私政策中予以说明。例如,应用通过xx方法获取xx范围内的软件安装列表信息,覆盖xx范围内的用户,并使用xx方法服务于xx功能。详情请参考链接:https://developer.huawei.com/...Section1.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)",解决方法:SDK5.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)华为桌面徽章开发支持平台,系统版本:EMUI4.1及以上桌面版本:6.3.29支持设备:华为设备3)发送消息参数,add_num参数,整型说明:应用徽章的累计数量和非应用徽章实际显示的数量,是一个大于0小于100的整数。比如一个应用当前有N条未读消息。如果add_num设置为3,则每发送一条消息,应用角标上显示的数字加起来就是3,即N+3。4)类参数、String参数、必选参数说明:应用入口Activity类的全路径。例:com.example.hmstest.MainActivity5)set_num参数,整型说明:设置角标的个数,大于等于0小于100的整数。比如set_num设置为10,不管消息发送了多少次,app徽章上显示的数字都是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一致,重新获取pushtoken后尝试发送消息。您可以在AGC平台选择推送服务,自行分析查询消息发送状态,也可以查询token是否可用。2)透传消息收不到:确认应用是否存活。当应用程序存活时,无论是前台还是后台,发送后使用onMessageReceived回调方法返回数据,即使应用程序被杀死也不会收到。5、设置自定义铃声1)自定义频道模式下,当应用数据处理地为中国时,channel_id字段无效。也就是说,通过自定义频道来设置铃声是不可行的,可以直接使用声场来设置。2)铃声资源必须放在应用程序的/res/raw路径下。支持的铃声格式包括MP3、WAV、MPEG等。3)声场参数格式为:/raw/shake。4)要使用声场,需要先创建通道再创建通道。通道创建后将失效。您可以卸载并重新安装应用程序,清除用户数据,然后重新测试。6.通知亮屏1)确保亮屏已开启,设置->通知中心->更多通知设置->通知亮屏提示。2)确保通知中心锁屏通知总开关已打开,设置->通知中心->锁屏通知。3)确保应用通知通道开关已打开,设置->通知中心->您的应用->选择一个通道->锁屏通知。7、检测到隐式PendingIntent的问题。这个问题在6.3.0.302版本中已经完全解决。请开发者参考更新后的文档:https://developer.huawei.com/...8.推送接口返回503错误码503指的是流量控制限制。目前默认为6000qps。建议每次发送的token数量不要超过100个,每次可以调用60个,每秒调用100次。详见以下链接:https://developer.huawei.com/...9、OnNewToke获取token不回调1)检查是否有多个“服务”继承了HmsMessageService类,以及只有一个类继承了HmsMessageService。2)检查测试设备是否为EMUI10及以上版本,如果是,直接在getToken方法中返回token,不回调。3)是否覆盖onNewToken(Stringtoken,Bundlebundle)方法,PushSDK版本低于5.0.4.302,请覆盖onNewToken(Stringtoken)方法。您可以覆盖onTokenError方法来检查是否返回错误消息。4)如果是EMUI10及以上,配置自动获取token,需要检查配置是否正确,参考文档(自动初始化):https://developer.huawei.com/...5)查看manifest文件,是否Register自己的“service”,它继承了HmsMessageService类,用于接收Token。参考文档(配置manifest.xml文件):https://developer.huawei.com/...6)查看推送开关是否开启:登录AppGalleryConnect网站,a.开发-概览-右侧小齿轮图标-API管理-开启Push服务。b.Development-GrowthService-PushService-点击Activate,修改服务状态为Activated。以上两种情况,如果刚刚修改完成,需要15分钟才能生效。10.错误代码:907135000在服务中调用推送初始化:publicstaticvoidstartPushService(Contextc){context=c;hwApi=newHuaweiApiClient.Builder(context).addApi(HuaweiPush.PUSH_API).addConnectionCallbacks(pushHw).addOnConnectionFailedListener(pushHw).build();hwApi.connect();}连接错误:@OverridepublicvoidonConnectionFailed(ConnectionResultresult){PluginLog.i(TAG,"onConnectionFailed,ErrorCode:"+result.getErrorCode());}输出:PushHw:onConnectionFailed,ErrorCode:907135000错误码907135000的排查步骤:1)请检查“agconnect-services.json”文件中的app_id和package_name参数是否与端侧一致。2)请检查“build.gradle”文件中是否配置了证书签名。3)可能是HMSCore(APK)缓存问题,请卸载并重新更新HMSCore(APK),然后断网重连,再打开应用。4)建议先使用华为终端进行测试。华为推送将依赖HMSCore(APK)。本应用会预装在华为手机上,非华为手机不会预装。5)关于签名证书:您应用的签名文件必须与您的签名文件生成的SHA256指纹证书相匹配,并且在项目中配置签名文件的地方也必须与上述两个签名文件一致。6)查看pick-up文件的位置,应该在项目级app目录下。7)在applyplugin的文件头下一行添加如下配置:'com.android.application'。applyplugin:'com.huawei.agconnect'(app模块的build文件中是否添加了apply插件?)8)在manifest中手动添加appid值,验证是否是配置问题。例如:9)可能是配置混乱问题,参考:https://developer.huawei.com/...更多HMSCore推送服务详情请参考:https://developer.huawei.com/...华为开发者联盟官网获取开发指导文档,参与开发者讨论请前往到Reddit社区下载demo和示例代码,请到Github解决集成问题。详情请到StackOverflow>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:关注GitHub和Gitee,了解HMSCore最新技术资讯~

猜你喜欢