问题形容
咱们接入游戏SDK6.1.0.301版本之后,应用已实名未成年的帐号登录游戏后,弹出SDK防沉迷提醒语“尊敬的用户,依据国家最新公布的游戏防沉迷规定,不满18岁的未成年人仅能在周五、周六、周日和法定节假日20时至21时登录游戏。为了您的身心健康,请合理安排工夫”,点击“确定”,还会弹出这个提醒语,游戏无奈退出。
我从华为利用市场上轻易下了个其余游戏,应用雷同的华为帐号登录,在弹出防沉迷提醒语后,点击“确定”,游戏是退出的。
问题剖析和解决
我找到华为技术反对(游戏有本人的QQ群就在群里间接征询,没有的话,能够提个工单征询cke_159.pnghttps://developer.huawei.com/…),在他们的疏导下,复现问题,取了全量日志,搜寻关键词“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://developer.huawei.com/…