更新日期:2025-10-17QuickGame(鸿蒙)客户端接入文档
1.1 将 gamesdkLibrary.har 包放在⼯程的 libs ⽬录下:
1.2 在 App Module 的 oh-package.json5中,添加依赖项:
如下图:
"requestPermissions": [
{}],
如下图:
1.4 在 App Module 的 module.json5的module节点增加如下client_id和app_id属性配置,⽤于华为登录和内购的应⽤身份鉴权:
"metadata": [
{
"name": "client_id",
"value": "xxxxxxxxx"
}
]
如下图:

以上内容可参考Demo的实现
1.6 华为后台获取Client ID和APP ID:

} from 'gamesdklibrary'
// 创建GameSDKManager实例对象 ,参数传SDK后台的productCode参数
gamesdkInstance: GameSDKManager =
GameSDKManager.getInstance('44021448506430380961470188790224')
this.gamesdkInstance.initWithProductCode('44021448506430380961470188790224')
//打开华为登录界⾯ this.gamesdkInstance.huaweiLogin(this.getUIContext())
华为后台需要添加公钥指纹,同时这⾥的证书需要和研发⼯程⾥使⽤的证书保持⼀致
SDK后台游戏管理 -功能配置⾥需配置鸿蒙参数
3.4 支付接口
//创建订单数据对象
let orderInfo: GameSDKOrderInfo = {
productId:'testProductId',
productName: 'testProductName',
cpOrderID: 'testCpOrderID',
amount: ‘6’,//单位元
callbackUrl: 'testCallbackUrl',
extrasParams: 'testExtrasParams'
}
//调⽤⽀付
this.gamesdkInstance.payWithOrderInfo(orderInfo)
华为后台开通应⽤内购买服务

SDK后台游戏管理 -> ⽀付通道 里需添加鸿蒙⽀付并配置参数:
注意:
1. 沙盒测试需要在华为后台添加测试账号,同时测试设备的系统设置⾥⾯需要登录该账号
2. 华为后台的商品id状态处于"草稿"状态不能测试,必须是"待提交"或者"审核通过"的状态
3. SDK后台需正确配置包名,商品id,商品⾦额,否则⽀付完成⽆法到账
//创建⻆⾊数据对象
let roleInfo: GameSDKRoleInfo = {
roleId:'testRoleId',
roleName: 'testRoleName',
serverId: 'testServerId',
serverName: 'testServerName',
roleLevel: 'testRoleLevel',
vipLevel: 'testVipLevel'
}
//上传游戏⻆⾊
this.gamesdkInstance.updateRoleInfo(roleInfo)
//打开隐私弹窗 this.gamesdkInstance.openPrivacyDialog(this.getUIContext())
//如果是华为⽤户登录可解绑
if (this.gamesdkInstance.isHuaweiUser()) {
this.gamesdkInstance.unbindHuaweiAccount()
}
this.gamesdkInstance.logout()
//⽆官包体系的游戏,可以调这个接⼝来关闭游戏官⽅账号登录,需在登录之前调⽤ this.gamesdkInstance.enableGameOfficeLogin(false)
1. 前往AppGallery Connect配置新⽼系统游戏的APP ID映射关系
参考华为⽂档: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/gameservice-gameplayer-huawei#section3907114313255
2. 处理登录回调返回的gamePlayerId
当gamePlayerId不为空值时,代表华为转移⽤户登录,即该玩家是之前在HarmonyOS 4及以下游戏的玩家,此时需要实现和HarmonyOS 4及以下系统上游戏内资产互通。这⾥返回的gamePlayerId就是安卓华为渠道的uid,通过判断gamePlayerId和安卓华为渠道的uid值是否⼀样,值⼀样就互通游戏内资产。如果安卓华为渠道的uid拼接了渠道号,那么gamePlayerId需要拼接同⼀个渠道号
this.gamesdkInstance.isHuaweiTransferAccount()
3.11.1 需先联系商务开通Quick云客服产品,获取客服产品code,将产品code传⼊客服接⼝
//打开云客服,参数传云客服后台的产品code this.gamesdkInstance.openServiceCenter(this.getUIContext(), '11145220560844xxxxxxxxxxxxxxx')
3.11.2 初始化窗⼝对象,需在Ability的onWindowStageCreate中调⽤如下⽅法
windowStage.getMainWindow((err, data) => {
if (err.code) {
console.error('获取失败' + JSON.stringify(err));
return;
}
console.info('获取主窗⼝的实例:' + JSON.stringify(data));
globalThis.windowClass = data // 赋值给全局变量windowClass
});
//注册SDK初始化回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_INIT_SUCCESS',
(data: GameSDKCallBackData) => {
console.log(`SDK初始化成功:message:${data.message}`)
});
//注册SDK登录回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_LOGIN_SUCCESS',
(data: GameSDKCallBackData) => {
//回调返回⽤户信息:
console.log(`SDK登录成功:uid:${data.uid}, userName:${data.userName},
token:${data.token}, gamePlayerId:${data.gamePlayerId},`)
//通过GameSDKUser⽤户类获取⽤户信息
promptAction.showDialog({ message: `uid:${GameSDKUser.getInstance().uid},
userName:${GameSDKUser.getInstance().userName}, token:${GameSDKUser.getInstance().token}`
})
//HarmonyOS 4及以下游戏的玩家标识openId/playerId,如何与HarmonyOS 5.0及以上游戏的玩家标识gamePlayerId建⽴映射
//1. 前往AppGallery Connect配置新⽼系统游戏的APP ID映射关系,https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/gameservice-gameplayer-huawei#section3907114313255
//2. 当回调⾥的gamePlayerId不为空值时,代表华为转移⽤户登录,即该玩家是之前在HarmonyOS 4及以下游戏的玩家,此时需要实现和HarmonyOS 4及以下系统上游戏内资产互通。这⾥返回的gamePlayerId就是安卓华为渠道的uid,通过判断gamePlayerId和安卓华为渠道的uid值是否⼀样,值⼀样就互通游戏内资产。
//3. 如果安卓华为渠道的uid拼接了渠道号,那么gamePlayerId需要拼接同⼀个渠道号。
});
//注册SDK⽀付成功回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_PAY_SUCCESS',
(data: GameSDKCallBackData) => {
//回调返回⽀付成功信息:
console.log(`SDK⽀付成功:${data.message}:orderNo:${data.orderNo},
productId:${data.productId}, extrasParams:${data.extrasParams}`)
});
//注册SDK⽀付失败回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_PAY_FAIL', (data:
GameSDKCallBackData) => {
//回调返回⽀付失败信息:
console.log(`SDK⽀付失败:${data.message}:orderNo:${data.orderNo},
productId:${data.productId}, extrasParams:${data.extrasParams}`)
});
//注册隐私弹窗同意回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_AGREE_PRIVACY',
(data: GameSDKCallBackData) => {
console.log(`点击了同意隐私协议:message:${data.message}
,isAgreePrivacy:${data.isAgreePrivacy}`)
});
//注册隐私弹窗不同意回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_REFUSE_PRIVACY',
(data: GameSDKCallBackData) => {
console.log(`点击了不同意隐私协议:message:${data.message}
,isAgreePrivacy:${data.isAgreePrivacy}`)
});
//注册退出登录回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_LOGOUT_SUCCESS',
(data: GameSDKCallBackData) => {
console.log(`退出登录成功`)
});
//注册解绑华为账号回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_UNBIND_SUCCESS',
(data: GameSDKCallBackData) => {
console.log(`华为账号解绑成功`)
});
//注册华为登录失败回调事件
NotificationCenter.getInstance().addObserver('GAMESDK_NOTIFICATION_KEY_HUAWEILOGIN_FAIL',
(data: GameSDKCallBackData) => {
console.log(`华为登录失败`)
if (data.code === 1002000016) {//⽤户点击关闭华为登录框
console.log(`⽤户点击关闭华为登录框`)
}
});
注意:为防止账号信息被篡改,游戏客户端获取到登录成功的回调后,需将回调里的uid跟token发送给游戏服务器端进行验证,具体操作详见QuickGameSDK服务器接入文档
//初始化微信登录
this.gamesdkInstance.initWxLogin("wxd6bxxxxxxxxxxx", "8606969ec8eb7ebxxxxxxxxxxxxx")
//初始化QQ登录
this.gamesdkInstance.initQQLogin("1022xxxxxx", "iNr8Hxxxxxxxx")
//在EntryAbility中响应来⾃微信/QQ的回调
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
GameSDKManager.getInstance('').handleAuthResult(want)
}
注意:
微信登录时⼯程需要使⽤⼿动签名,不然会报错:"由于应⽤BundleID信息校验不通过,⽆法使⽤微信登录"
QQ后台需要正确配置鸿蒙应⽤签名,不然会报错:"error authResponse is null"
参考⽂档:https://wiki.connect.qq.com/harmonyos_sdk%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98
QQ后台AppLinking状态需要验证通过
module.json5 配置⽂件修改
// module.json5 的"module"节点下配置 querySchemes
"querySchemes": [
"https",
"qqopenapi",
"weixin"
]
// 在 Ability 的 skills 节点中配置scheme
"skills": [
{
"entities": [
"entity.system.browser"
],
"actions": [
"ohos.want.action.viewData"
],
"uris": [
{
"scheme": "qqopenapi", // 接收 QQ 回调数据
"host": "(替换申请的互联 appId)", // 业务申请的互联 appId,如果填错会导致 QQ ⽆法回调
"path": "auth",
"linkFeature": "Login",
}
]
}
]
在业务 Ability.onNewWant() 中调⽤SDK如下⽅法:
//在EntryAbility中响应来⾃微信/QQ的回调
GameSDKManager.getInstance('').handleAuthResult(want)
当需要修改sdk的默认域名时,打开⼯程找到sdk配置⽂件,⽂件路径:
oh_modules/gamesdklibrary/src/main/resources/rawfile/sdk_config.json,然后修改⽂件中mainurl对应的value值
可参考SDK Demo 接⼊
李先生:13880511661
QQ:48157910
赵先生:15390049857
QQ:1077535763
孙女士:13551010407
QQ:1799614139
QQ群:698731538