未成年帐号登录华为游戏,启动后不断弹出防沉迷提示

问题描述

我们接入游戏SDK6.1.0.301版本之后,使用已实名未成年的帐号登录游戏后,弹出SDK防沉迷提示语“尊敬的用户,根据国家最新发布的游戏防沉迷规定,不满18岁的未成年人仅能在周五、周六、周日和法定节假日20时至21时登录游戏。为了您的身心健康,请合理安排时间”,点击“确定”,还会弹出这个提示语,游戏无法退出。

我从华为应用市场上随便下了个其他游戏,使用相同的华为帐号登录,在弹出防沉迷提示语后,点击“确定”,游戏是退出的。

问题分析和解决

我找到华为技术支持(游戏有自己的QQ群就在群里直接咨询,没有的话,可以提个工单咨询 https://developer.huawei.com/consumer/cn/support/feedback ),在他们的引导下,复现问题,取了全量日志,搜索关键词“HMSSDK”,发现一直在调用getCurrentPlayer接口,且返回错误码7025:

错误码7025表示用户未实名或者已实名未成年。

华为技术向我们解释:接入6.1.0.301版本游戏SDK,实名认证和防沉迷功能由SDK实现,在调用getCurrentPlayer接口或getGamePlayer接口后,防沉迷系统生效,如果登录的是未成年帐号,SDK会弹出上面的提示信息。结合日志,明显能看到是因为不停调用getCurrentPlayer接口触发弹框一直弹出的。

为什么会不停调用getCurrentPlayer接口?我自己检查了下,发现这个接口我是放在onStart里调用的(接入游戏登录时,指导文档要求:用户在游戏过程中切出游戏并在其他应用中切换了帐号,再次回到游戏时,应用必须重新获取playerID/openId,检查是否与现有playerID/openId一致,如果不一致则需要引导用户重新登录。所以我之前就在onStart里调用getCurrentPlayer接口了),当SDK防沉迷弹窗出来后,就会触发生命周期切换,从onpause离开,又回到onStart,然后触发调用getCurrentPlayer接口了。华为技术建议我在onResume里调用接口,修改之后,点击防沉迷提示框中的“确定”,游戏退出,问题解决。

原文地址:https://www.cnblogs.com/developer-huawei/p/15769088.html