# 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 | 取消支付 |