
1、在Application的onCreate方法中添加如下代码,用于注册Activity的回调监听。
- public class MyApplication extends Application{
- @Override
- public void onCreate(){
- super.onCreate();
- HuaweiMobileServicesUtil.setApplication(this);
- }
- }
- 编译前请确认应用的Manifest文件中application已经配置了Application类的名称,例如“android:name=".MyApplication"”。
2、调用JosApps.getJosAppsClient方法初始化JosAppsClient对象,并调用JosAppsClient.init(AppParams appParams)方法进行游戏服务SDK初始化和游戏公告初始化,AppParams中传入游戏应用对应的Scope(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM_GAME)。
1、已实名的未成年人在非规定游戏时间内登录游戏,游戏服务会弹框提示用户不允许游戏,玩家点击“确定”。
2、已实名的未成年人在规定时间内登录游戏,当游戏进行到21时,游戏服务会弹框提示玩家已到游戏时间,玩家点击“知道了”。
您需要在onExit方法中实现触发防沉迷后的游戏保存、帐号登出等功能。
调用init接口进行游戏初始化时,HMS Core SDK会向用户弹出华为联运隐私协议窗口,用户如果拒绝则会返回7401错误码,此时应禁止用户进入游戏。
- public void init() {
- AccountAuthParams params = AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM_GAME;
- JosAppsClient appsClient = JosApps.getJosAppsClient(this);
- Task<Void> initTask;
- ResourceLoaderUtil.setmContext(this); // 设置防沉迷提示语的Context,此行必须添加
- AppParams appParams=new AppParams(params, new AntiAddictionCallback() {
- @Override
- public void onExit() {
- // 该回调会在如下两种情况下返回:
- // 1.未成年人实名帐号在白天登录游戏,华为会弹框提示玩家不允许游戏,玩家点击“确定”,华为返回回调
- // 2.未成年实名帐号在国家允许的时间登录游戏,到晚上9点,华为会弹框提示玩家已到时间,玩家点击“知道了”,华为返回回调
- // 您可在此处实现游戏防沉迷功能,如保存游戏、调用帐号退出接口或直接游戏进程退出(如System.exit(0))
- }
- });
- // 当您的游戏需要实现智慧屏会员功能时需要实现该回调,游戏过程中会员到期时触发。
- appParams.setExitCallback(new ExitCallback() {
- @Override
- public void onExit(int retCode) {
- // 您需要在此方法中实现退出游戏的功能,例如保存玩家进度、调用华为帐号退出接口等。
- }
- });
- initTask = appsClient.init(appParams);
- initTask.addOnSuccessListener(new OnSuccessListener<Void>() {
- @Override
- public void onSuccess(Void aVoid) {
- showLog("init success");
- hasInit = true;
- // 游戏初始化成功后需要调用一次浮标显示接口
- Games.getBuoyClient(this).showFloatWindow();
- // 必须在init成功后,才可以实现登录功能
- // signIn();
- }
- }).addOnFailureListener(
- new OnFailureListener() {
- @Override
- public void onFailure(Exception e) {
- if (e instanceof ApiException) {
- ApiException apiException = (ApiException) e;
- int statusCode = apiException.getStatusCode();
- // 错误码为7401时表示用户未同意华为联运隐私协议
- if (statusCode == JosStatusCodes.JOS_PRIVACY_PROTOCOL_REJECTED) {
- Log.i(TAG, "has reject the protocol");
- // 此处您需禁止玩家进入游戏
- } else if (statusCode == GamesStatusCodes.GAME_STATE_NETWORK_ERROR) {
- // 错误码7002表示网络异常
- Log.i(TAG, "Network error");
- // 此处您可提示玩家检查网络,请不要重复调用init接口,否则断网情况下可能会造成手机高耗电。
- } else if (statusCode == 907135003) {
- // 907135003表示玩家取消HMS Core升级或组件升级
- showLog("init statusCode=" + statusCode);
- init();
- } else {
- // 在此处实现其他错误码的处理
- }
- }
- }
- });
- }
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh