首页 > 其他分享 >【HMS Core】游戏初始化

【HMS Core】游戏初始化

时间:2022-11-23 09:46:26浏览次数:70  
标签:初始化 调用 游戏 Core 玩家 init HMS public

 前提条件

注意事项

  • 本场景中涉及的功能必须在应用启动时完成,而不是用户在进行登录、支付等操作时才完成,否则可能会导致应用审核被驳回。
  • 如果游戏向用户提供了自己的用户隐私条款,init接口必须在用户同意条款后调用,init接口调用后HMS Core SDK还会弹出华为联运隐私协议,用户需要同意后才能进入游戏。
  • 如果需要发布游戏到非中国大陆地区,请集成5.0.4.303版本游戏服务SDK,并在调用init接口时不传参数。

开发步骤

cke_12788.png

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)。

  • 发布中国大陆地区的游戏需要设置AntiAddictionCallback防沉迷回调,当满足以下条件时游戏会将结果回调给您。

    1、已实名的未成年人在非规定游戏时间内登录游戏,游戏服务会弹框提示用户不允许游戏,玩家点击“确定”。

    2、已实名的未成年人在规定时间内登录游戏,当游戏进行到21时,游戏服务会弹框提示玩家已到游戏时间,玩家点击“知道了”。

    您需要在onExit方法中实现触发防沉迷后的游戏保存、帐号登出等功能。

    调用init接口进行游戏初始化时,HMS Core SDK会向用户弹出华为联运隐私协议窗口,用户如果拒绝则会返回7401错误码,此时应禁止用户进入游戏。

  • 需要支持智慧屏会员功能的游戏需要设置ExitCallback退出游戏,当智慧屏会员权益校验不通过需要退出游戏时触发。
    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

标签:初始化,调用,游戏,Core,玩家,init,HMS,public
From: https://www.cnblogs.com/developer-huawei/p/16917254.html

相关文章