问题现象
最近集成华为提供的HMS SDK能力时,无法登录,调用华为提供的getCurrentPlayer接口总是报错6004。日志搜索hmssdk,报错如下:
Line 291: I/HMSSDK_HmsClient: receive msg status_code:0, error_code6004, api_name:game.getCurrentPlayer
在这里插入图片描述
搜索官网错误码介绍,显示该错误码表示:权限不存在,未在华为开发者联盟上申请。
解决方案
既然报错原因是没有在开发者联盟上申请相关权限,因此我先参考服务和API开通文档检查了下当前开启的API权限情况,截图如下:
在这里插入图片描述
应用中涉及的服务,我的项目都已经开启了。所以这里我的权限已经启动。这里百思不得其解,最后联系了华为技术支持定位。他们给的方案如下:
如果没有启动,需要先开启,等待约15分钟后,测试手机上将HMS Core缓存清理后,客户端测试看是否OK。
如果已经启动,这个有可能(极小概率出现)是因为当时API开启时,出现了某种异常,导致华为后台系统没有收到这个API开启的同步消息,可以界面手动关闭下这个API开关,再重新打开,触发消息再次同步。同样需要将HMS Core缓存清理后,等待15分钟后测试。
清理HMS Core缓存方法为:手机设置>应用>应用管理>HMS Core>存储>清空缓存。
最后,果然通过关闭后重新开启的方式,我的游戏可以正常登录了。