问题描述
更新游戏SDK到6.1.0.301版本之后,游戏包被审核驳回:在未安装或需更新华为移动服务版本(HMS Core)的手机上,提示安装华为移动服务(HMS Core),点击取消,游戏卡屏。修改建议:请参考测试结果修复该问题,确保游戏可以正常运行。
问题复现
我在荣耀7X手机上,先回退HMS Core版本(操作路径:手机-设置-应用管理-HMS Core,右上角有三个点,点进去卸载更新)后,复现了问题,问题细节点:启动游戏后,弹出安装或更新HMS Core的提示框,首次点击取消,等待很久也没再次弹出提示语,需要点击物理返回键之后才弹出(像是有个透明的界面遮挡住了,点击返回之后,透明界面消失),再次点击取消,就可以直接弹出了。
问题解决
我们找到华为技术支持咨询(提个工单咨询),通过抓取全量日志后分析:
根据日志查看是游戏界面调用了SDK初始化接口以及帐号登录接口,在低版本华为移动服务的设备上,初始化处理接口先启动透明跳板页面BridgeActivity进行升级弹窗的拉起,同时帐号处理接口也启动透明版本BridgeActivity页面进行升级弹窗的拉起,此时有两个透明页BridgeActivity, 且HMS Core的升级弹窗是第一个页面拉起的。点击物理返回键,会关闭前一个BridgeActivity,此时就可以点击升级弹窗中的取消按钮了。
简单来说,就是华为的框架BaseSDK在并发调用BridgeActivity情况下,会导致第一个调用无回调(这个问题华为那边后续会进行优化)。
发现并发调用BridgeActivity后,华为技术又去检查了我们的代码,确认我们并行调用了初始化和登录接口,6.1.0.301版本的游戏SDK添加了初始化的回调,建议我们在初始化成功后再调用登录接口。修改之后,问题解决。
正确示例参考如下,详情请参考游戏启动。