# GHOME SDK 开发手册 for HarmonyOS

# 前言

本文用于指导游戏开发商接入GHome HarmonyOS 版本SDK,文中包含客户端的接入说明

# SDK接入流程概述

  • 获取隐私并同意

  • 初始化SDK

  • 初始化成功,调用账号功能相关接口

  • 其他功能开发中

# 集成SDK文件到游戏工程

请按照以下步骤集成:

  • 导入ghomesdk.har

    • 在拖入.har到libs文件夹后, 还要检查.har是否被添加到Library,要在项目的 oh-package.json5下添加如下代码:

      "dependencies": {
          ghomesdk: 'file:libs/ghomesdk.har'
      }
      
      1
      2
      3
    • build-profile.json5下的products中添加如下代码:

      "products": [
         {
              ...
              ...
              "buildOption": {
                "strictMode": {
                  "useNormalizedOHMUrl": true
                }
              }
          }
      ]
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11

开发环境要求:

  • HarmonyOS SDK版本:5.0.0(12) +

  • DevEco Studio版本:

    • DevEco Studio NEXT Developer Beta1 +

    • Build Version: 5.0.3.403+

# 数据结构说明

# GHomeBaseRet详解

GHomeSDK 回调的基础结构体,所有的回调结果类都继承自它。该类包含一些基础的信息。

成员变量名称 类型 说明
retCode int SDK 的返回码,详情参考 GHomeRetCode 类
retMsg string SDK 描述信息
thirdCode int 第三方渠道返回码
thirdMsg string 第三方渠道描述信息
extraJson string 扩展字段

# 基础模块(必接)

# 隐私和服务协议

接入方根据需求,可选择使用SDK内部的隐私和服务协议弹框,或者自定义隐私和服务协议弹框。

在使用SDK具体功能之前,必须要先同意隐私和服务协议。

# 使用SDK内部的隐私和服务协议弹框

  • 接口声明

    doPrivacy(appId: string, callback: (ret: GHomePrivacyRet) => void): void
    
    1
  • 参数说明

    参数名称 参数类型 说明
    appId string 必传,GHome后台登记游戏获得的 appId
  • 示例代码

    GHome.getInstance().doPrivacy('xxx', (v: GHomePrivacyRet) => {
    
    })
    
    1
    2
    3
  • 数据结构

    GHomePrivacyRet详解。继承自GHomeBaseRet,包含基础的信息

    成员变量名称 类型 说明
    privacyPolicyUrl string 隐私协议链接,只在 需要弹出隐私和服务协议 且 使用自定义隐私协议的时候有值
    serviceAgreementUrl string 服务协议链接,只在 需要弹出隐私和服务协议 且 使用自定义隐私协议的时候有值
    isShow boolean 是否需要弹出隐私协议,只在使用自定义隐私协议的时候有值

# 自定义隐私和服务协议弹框

如果游戏使用的自定义隐私弹框,可调用此接口,获取隐私协议信息。

  • 接口声明

    获取隐私和服务协议内容

    doCustomPrivacy(appId: string, scene: GHomePrivacyScene, callback: (ret: GHomePrivacyRet) => void): void
    
    1

    回调隐私和服务协议协议结果

    setCustomPrivacyResult(isAgreePrivacy: boolean): void
    
    1
  • 参数说明

    参数名称 参数类型 说明
    appId string 必传,GHome后台登记游戏获得的 appId
    scene GHomePrivacyScene 必传,初始化之前:BeforeInit; 登录之前:BeforeLogin
    参数名称 参数类型 说明
    isAgreePrivacy boolean 必传,是否同意了隐私和服务协议协议
  • 数据结构

    GHomePrivacyRet详解。继承自GHomeBaseRet,包含基础的信息

    成员变量名称 类型 说明
    privacyPolicyUrl string 隐私协议链接,只在 需要弹出隐私和服务协议 且 使用自定义隐私协议的时候有值
    serviceAgreementUrl string 服务协议链接,只在 需要弹出隐私和服务协议 且 使用自定义隐私协议的时候有值
    isShow boolean 是否需要弹出隐私协议,只在使用自定义隐私协议的时候有值
  • 注意事项

    如果使用了自定义隐私和服务协议弹框,setCustomPrivacyResult方法必须调用。

    extraJson字段会返回完整的隐私和服务相关信息。

# 初始化

接受GHomeSDK初始化完成的回调,游戏需要注册回调函数进行处理。游戏需要等待该回调完成后,才能开始调用GHomeSDK其他模块功能接口。

  • 接口声明

    init(appId: string, callback: (ret: GHomeBaseRet) => void): void
    
    1
  • 参数说明

    参数名称 参数类型 说明
    appId string 必传,GHome后台登记游戏获得的 appId
  • 示例代码

    GHome.getInstance().init('xxx', (v: GHomeBaseRet) => {
        
    })
    
    1
    2
    3

# 登录(必接)

GHomeSDK登录功能为游戏提供便捷的登录功能。

  • 接口声明

    login(callback: (ret: GHomeLoginRet) => void): void
    
    1
  • 示例代码

    GHome.getInstance().login((v: GHomeLoginRet) => {
    
    })
    
    1
    2
    3
  • 数据结构

    GHomeLoginRet详解,继承自GHomeBaseRet,包含基础的信息

    成员变量名称 类型 说明
    userId string 用户ID
    ticket string 登录票据
    isGuest bool 是否是游客登录

# 获取票据(必接)

获取ticket

  • 接口声明

    getTicket(areaId: string, callback: (ret: GHomeGetTicketRet) => void): void
    
    1
  • 参数说明

    参数名称 参数类型 说明
    areaId string 区ID
  • 示例代码

    GHome.getInstance().getTicket('xxx', (v: GHomeGetTicketRet) => {
                 
    })
    
    1
    2
    3
  • 数据结构

    GHomeGetTicketRet详解,继承自GHomeBaseRet,包含基础的信息

    成员变量名称 类型 说明
    ticket string 票据

# 支付

接入华为 IAP Kit(应用内支付服务),接入前请按照官方文档 (opens new window),进行项目配置。

  • 接口声明

    pay(productId: string, gameOrderId: string, areaId: string, groupId: string, ext: string, callback: (ret: GHomeBaseRet) => void): void
    
    1
  • 参数说明

    参数名称 参数类型 说明
    productId string 产品ID
    gameOrderId string 游戏订单ID
    areaId string 区ID
    groupId string 组ID
    extInfo string 附加参数
  • 示例代码

    GHome.getInstance().pay('productId',
                        'gameOrderId',
                        'areaId',
                        'groupId',
                        'extInfo', (v: GHomeBaseRet) => {
        
    })
    
    1
    2
    3
    4
    5
    6
    7

# 获取区服列表信息

  • 接口声明

    getAreaConfig(callback: (ret: GHomeAreaConfigRet) => void):void
    
    1
  • 示例代码

    GHome.getInstance().getAreaConfig((v: GHomeAreaConfigRet) => {
                        
    })
    
    1
    2
    3
  • 数据结构

    GHomeAreaConfigRet详解,继承自GHomeBaseRet,包含基础的信息

    成员变量名称 类型 说明
    areaList Array<AreaInfo> 区服数组

    AreaInfo

    成员变量名称 类型 说明
    area_code string 区code
    name string 区名字
    group_id string 组ID
    group_name string 组名字

# 注销

  • 接口声明

    unregister(callback: (ret: GHomeBaseRet) => void): void
    
    1
  • 示例代码

    GHome.getInstance().unregister((v: GHomeBaseRet) => {
    
    })
    
    1
    2
    3

# 登出

  • 接口声明

    logout(callback: (ret: GHomeBaseRet) => void): void
    
    1
  • 示例代码

    GHome.getInstance().logout((v: GHomeBaseRet) => {
    
    })
    
    1
    2
    3

# 登录区服

  • 接口声明

    loginArea(areaId: string, groupId: string, callback: (ret: GHomeBaseRet) => void): void
    
    1
  • 参数说明

    参数名称 参数类型 说明
    areaId string 区ID
    groupId string 组ID
  • 示例代码

    GHome.getInstance().loginArea(msg.data.areaId, msg.data.groupId, (v: GHomeBaseRet) => {
    
    })
    
    1
    2
    3

# 绑定活动手机

  • 接口声明

    bindPhone(callback: (ret: GHomeBaseRet) => void): void
    
    1
  • 示例代码

    GHome.getInstance().bindPhone((v: GHomeBaseRet) => {
    
    })
    
    1
    2
    3

# 扫码

  • 接口声明

    scanQRCode(extendStr:string, callback: (ret: GHomeScanQRCodeRet) => void):void
    
    1
  • 参数说明

    参数名称 参数类型 说明
    extendStr string 附加参数
  • 示例代码

    GHome.getInstance().scanQRCode('xxx', (v: GHomeScanQRCodeRet) => {
    
    })
    
    1
    2
    3
  • 数据结构

    GHomeScanQRCodeRet详解,继承自GHomeBaseRet,包含基础的信息

    成员变量名称 类型 说明
    type GHomeScanQRCodeType 扫码类型,支付=pay,登录=login

# FAQ

# 错误码参考 GHomeRetCode

错误码 描述 备注
-1 未知错误
0 成功
1 取消
2 不同意隐私
3 未初始化
4 初始化失败
5 用户未登录,请登录
7 网络不稳定
8 无法解码内容数据
9 所有渠道均已绑定
10 数据为空
11 请求太频繁了,请稍后
12 窗口创建失败,请重试
13 人脸认证失败
14 服务器满员
23 自动登录票据失效
32 账号受风控策略限制
711 个性账号未绑定安全手机
401 支付失败
402 有一笔未发货的订单且补单失败
403 当前环境不支持内购
404 商品配置错误
405 取消支付
Last Updated: 2024/12/11 07:28:40