【HMS Core】游戏初始化

news2024/11/18 23:32:19

 前提条件

  • 实现游戏初始化前,必须已经完成AppGallery Connect的配置准备,参见AGC控制台准备。
  • 已完成集成SDK和配置混淆脚本。

注意事项

  • 本场景中涉及的功能必须在应用启动时完成,而不是用户在进行登录、支付等操作时才完成,否则可能会导致应用审核被驳回。
  • 如果游戏向用户提供了自己的用户隐私条款,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无线传感器网络:物理层设计

文章目录Physical Layer TechnologiesRadio FrequenciesNarrow-Band CommunicationSpread SpectrumDSSSFHSSUltra Wide Band (UWB)Optical CommunicationAcoustic CommunicationMagnetic Induction CommunicationRF Wireless CommunicationWireless Channel EffectsAttenuation…

项目工作中,管理者如何合理安排任务优先级?

面对各种工作的时候&#xff0c;你是否总是会手忙脚乱&#xff1f; 在项目工作中&#xff0c;管理者每天面对各种工作&#xff1a;需求、沟通还有其他五花八门任务。 管理者应该如何合理安排自己任务的优先级呢&#xff1f; 在安排任务优先级的时候&#xff0c;我最常用方法…

后台部署运维零碎总结

一、场景 为了实现项目部署简化&#xff0c;尽量都由脚本来完成&#xff0c;需要将许多手动处理过程进行脚本化处理。 二、环境 1、VMware 虚拟机 Download VMware Workstation Pro 2、获取CentOs 镜像 3、使用镜像在虚拟机中安装 4、配置网卡信息&#xff0c;重启网络 三…

【算法基础复习1】差分

目录 一、差分简介 一维差分结论 Acwing.797 差分 P4552 [Poetize6] IncDec Sequence - 差分思维玄学题 一、差分简介 规定a数组下标从1开始 a[0]0b数组下标从1开始定义一个数组b&#xff0c;使 对于a数组 其差分数组b为 a是b的前缀和数组 比如 a[2]…

Python实战 | 如何抓取tx短片弹幕并作词云图分析

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 本次目的&#xff1a;采集tx短片弹幕,并且做词云图可视化分析 这个不少漫迷应该都看过吧~ 哪里都好&#xff0c;就是更新太慢了一点&#xff0c;剧情磨蹭了一点&#xff0c;哎 那今天我们就来采集一下它的弹幕吧&#xff…

我把提高开发效率的VSCode插件分享出来了

前言 最近在家办公&#xff0c;写代码发现没有那么流畅&#xff0c;一看是某些插件没有安装&#xff0c;搞得写代码的效率降低&#xff0c;所以这里有些比较实用的插件推荐给大家 开发实用插件 Settings Sync 利用 Settings Sync &#x1f48e;将 VS Code 的设置保存在gith…

MCE | HPV 疫苗要不要打?

HPV 感染很大概率会患宫颈癌&#xff1f;HPV 感染 ≠ 患宫颈癌超过 90&#xff05; 的 HPV 感染者无症状&#xff0c;并无需干预能在 2 年内清除感染。虽然大部分 HPV 感染会自行消退&#xff0c;但所有感染女性都面临 HPV 感染转为慢性&#xff0c;以及癌前病变发展为浸润性宫…

ViewPager2+TabLayout

效果图&#xff1a; MainActivity public class MainActivity extends AppCompatActivity {private TabLayout tabLayout;private ViewPager2 viewPager2;private int activeColor Color.parseColor("#ff678f");private int normalColor Color.parseColor("#…

C++入门教程||C++中的输入输出||C++ 注释

1. cout输出流的使用&#xff1a; cout输出流需要搭配<<输出操作符来使用&#xff0c;如输出语句&#xff1a; 1 cout<<"Hello"; 即会在屏幕上显示字符串Hello。 本质上&#xff0c;是将字符串"Hello"插入到cout对象里&#xff0c;并以cout…

一些RCE的汇总

RCE自增RCE参考[CTFshow-RCE极限大挑战官方wp]RCE-1[过滤.(]RCE-2p[自增-Array]RCE-3[自增-NAN-<105字符]RCE-4[自增-NAN-<84字符]RCE-5[自增-gettext扩展]72位字符68位字符无参数RCE参考[RCE篇之无参数rce]介绍例题一些能用上的函数前两天刚好ctfshow有个RCE极限大挑战&…

网络基础知识总结+网络设备介绍(运维必备网络知识)

什么是网络 网络是由多台计算机&#xff08;或手机等&#xff09;通过网络设备&#xff08;交换机以及路由器&#xff09;及网线&#xff08;或无线&#xff09;连接起来&#xff0c;按照一定的规范规则则彼此进行通信的系统总称。 为什么要有网络 网络出现的最核心需求就是…

[足式机器人]Part3机构运动微分几何学分析与综合Ch01-3 平面运动微分几何学——【读书笔记】

本文仅供学习使用 本文参考&#xff1a; 《机构运动微分几何学分析与综合》-王德伦、汪伟 《微分几何》吴大任 Ch01-3 平面运动微分几何学1.2.2 瞬心线-21.2.3 点轨迹的Euler-Savary公式1.2.2 瞬心线-2 &#xff08;3&#xff09;平面连杆机构&#xff08;二自由度开链串联机构…

【LeetCode-中等】238. 除自身以外数组的乘积(详解)

题目 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请不要使用除法&#xff0c;且在 O(n) 时…

vue 动态组件 render/jsx

需求 根据用户需求设定的动态呈现表单内容 刚开始 打算使用v-html使用,但是v-html 无法渲染组件&#xff0c;只能显示原生的dom,操作起来实在是不方便。查阅了之后&#xff0c;发现可以用render或者jsx实现【为了能作为Vue模板解析】。于是乎开启了我render之旅~ 使用 <tem…

基于JAVA的图书借阅管理平台【数据库设计、源码、开题报告】

数据库脚本下载地址&#xff1a; https://download.csdn.net/download/itrjxxs_com/86427643 高校图书馆提倡“以人为本”的管理理念&#xff0c;从读者的角度出发&#xff0c;最大程度满足读者群体的文献资源需要。高校图书馆的管理理念和服务模式之间有着紧密的联系&#xff…

一键开启云原生网络安全新视界

本文作者&#xff1a;陈桐乐 李卓嘉 随着云原生的兴起&#xff0c;微服务、容器、kubernetes容器编排正在快速改变着企业软件架构的形态&#xff0c;单体架构、分布式架构、微服务架构&#xff0c;软件架构在持续演进的过程中&#xff0c;变得越来越复杂&#xff0c;管理和维护…

Qt QLabel文本框的使用

文章目录QLabel文本框的使用QLabel文本框的信号和槽实例演示QLabel文本框的用法已剪辑自: http://c.biancheng.net/view/vip_9653.html QLabel 是 Qt 帮我们写好的一个控件类&#xff0c;间接继承自 QWidget 类&#xff0c;它的继承关系如下&#xff1a; QLabel -> QFrame…

消防宣传科普|消防安全知识网上答题挑战赛活动方案

活动背景 为普及消防法律法规和消防安全知识&#xff0c;营造消防宣传月浓厚氛围。集团公司防火办通过“防火安全知识专项学习与竞答”小程序&#xff0c;开展“消防知识网上答题挑战赛”&#xff0c;提升全员消防安全意识&#xff0c;提高抗御火灾、自防自救和组织疏散能力。…

配置FTP站点操作步骤—图解

前提条件(已安装FTP服务器可忽略)&#xff1a; 点击WinR后在运行窗口中输入control&#xff0c;将打开控制面板&#xff0c;选择【程序】—【启动或关闭Windows功能】—点击【Internet Information Services】勾选【FTP服务器】—点击【确定】按钮按照即可。 1.点击WinR后在运…

数字集成电路设计(六、Verilog HDL高级程序设计举例)

文章目录1. 数字电路系统设计的层次化描述方式1.1 Bottom-Up 设计方法1.2 Top-Down 设计方法2. 典型电路设计2.1 加法器树乘法器2.1.1 改进为两级流水线4位加法器树乘法器2.2 Wallace 树乘法器2.3 复数乘法器2.4 FIR滤波器的设计2.5 存储器的设计2.6 FIFO的设计1. 数字电路系统…