更新日期:2025年 04月 25日QuickGame(鸿蒙)客户端接入文档
<h3>
<span style="font-size:16px;">一、导⼊SDK资源</span>
</h3>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">1.1 将 gamesdkLibrary.har 包放在⼯程的 libs ⽬录下:</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20241127/20241127105158d1CF665.png" alt="" />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">1.2 在 App Module 的 oh-package.json5中,添加依赖项:</span>
</p>
<p>
<br />
</p>
<span style="font-size:14px;">"dependencies": {</span><br />
<span style="font-size:14px;">"gamesdklibrary": "file:./libs/gamesdkLibrary.har"</span><br />
<span style="font-size:14px;">}</span><br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;">如下图:</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20241127/202411271052362Mot105.png" alt="" />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<span style="font-size:14px;">1.3 在 App Module 的 module.json5中,配置⽹络访问权限:</span><br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;">"requestPermissions": [</span>
</p>
<span style="font-size:14px;">{</span><br />
<span style="font-size:14px;">"name": "ohos.permission.INTERNET"</span><br />
<p>
<span style="font-size:14px;">}],</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">如下图:</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20241127/20241127105316wlAJ922.png" alt="" />
</p>
<p>
<span style="white-space:normal;font-size:14px;"><br />
</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><br />
</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><span style="font-size:14px;">1.4 </span><span style="font-size:14px;">在 App Module 的 module.json5的module节点增加如下client_id和app_id属性配置,⽤于华为登录和内购</span><span style="font-size:14px;">的应⽤身份鉴权:</span><br />
<span style="font-size:14px;"> </span><br />
<span style="font-size:14px;">"metadata": [</span><br />
<span style="font-size:14px;">{</span><br />
<span style="font-size:14px;">"name": "client_id",</span><br />
<span style="font-size:14px;">"value": "xxxxxxxxx"</span><br />
<span style="font-size:14px;">}</span><br />
<span style="font-size:14px;">]</span><br />
<span style="font-size:14px;"> </span><br />
<span style="font-size:14px;">如下图:</span></span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><span style="font-size:14px;"><br />
</span></span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><img src="https://staticsite.quickapi.net/data/newFiles/20250425/20250425104936myfl733.png" alt="" /><br />
</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><br />
</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;">以上内容可参考Demo的实现</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><br />
</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><br />
</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;">1.6 华为后台获取Client ID和APP ID:</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><img src="https://staticsite.quickapi.net/data/newFiles/20250425/20250425105049VAaf804.png" alt="" /><br />
</span>
</p>
<p>
<span style="white-space:normal;font-size:14px;"><br />
</span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h3>
<span style="font-size:16px;">二、</span><span style="white-space:normal;font-size:16px;">导入SDK接口</span>
</h3>
<p>
<br />
</p>
<span style="font-size:14px;">import { GameSDKManager, DialogView,DialogViewController, GameSDKUser,</span><br />
<span style="font-size:14px;">GameSDKRoleInfo, GameSDKOrderInfo, NotificationCenter, GameSDKCallBackData</span><br />
<p>
<span style="font-size:14px;">} from 'gamesdklibrary'</span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h3>
<span style="font-size:16px;">三、接口调⽤⽰例</span>
</h3>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.1 创建接口实例对象</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">// 创建GameSDKManager实例对象 ,参数传SDK后台的productCode参数
gamesdkInstance: GameSDKManager =
GameSDKManager.getInstance('44021448506430380961470188790224')</pre>
<br />
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.2 初始化接口</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">this.gamesdkInstance.initWithProductCode('44021448506430380961470188790224')</pre>
<br />
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.3 登录接口</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">SDK官方登录接口:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//打开登录界⾯
this.gamesdkInstance.login(this.getUIContext())</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">华为账号登录接⼝:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//打开华为登录界⾯
this.gamesdkInstance.huaweiLogin(this.getUIContext())</pre>
<p>
<br />
</p>
<p>
<br />
<span style="font-size:14px;">华为后台开发者管理中⼼-授权管理 ,需要申请获取⼿机号权限</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20250425/20250425110120Wk12813.png" alt="" />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">SDK后台游戏管理 -功能配置⾥需配置鸿蒙参数</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20250425/20250425110201ilVH901.png" alt="" />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.4 支付接口</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"></pre>
<pre class="brush:js;toolbar:false">//创建订单数据对象
let orderInfo: GameSDKOrderInfo = {
productId:'testProductId',
productName: 'testProductName',
cpOrderID: 'testCpOrderID',
amount: ‘6’,//单位元
callbackUrl: 'testCallbackUrl',
extrasParams: 'testExtrasParams'
}
//调⽤⽀付
this.gamesdkInstance.payWithOrderInfo(orderInfo)</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">SDK后台游戏管理 -> ⽀付配置需添加鸿蒙⽀付并配置参数:</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20250425/20250425111207UdEk414.png" alt="" />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.5 上传⾓⾊接口</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//创建⻆⾊数据对象
let roleInfo: GameSDKRoleInfo = {
roleId:'testRoleId',
roleName: 'testRoleName',
serverId: 'testServerId',
serverName: 'testServerName',
roleLevel: 'testRoleLevel',
vipLevel: 'testVipLevel'
}
//上传游戏⻆⾊
this.gamesdkInstance.updateRoleInfo(roleInfo)
</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.6 隐私弹窗接口</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false">//打开隐私弹窗
this.gamesdkInstance.openPrivacyDialog(this.getUIContext())
</pre>
<br />
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.7 </span><span style="font-size:14px;">解绑华为账号接⼝</span>
</h4>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//如果是华为⽤户登录可解绑
if (this.gamesdkInstance.isHuaweiUser()) {
this.gamesdkInstance.unbindHuaweiAccount()
}</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.8 </span><span style="font-size:14px;">退出登录接⼝</span>
</h4>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">this.gamesdkInstance.logout()</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.9 </span><span style="font-size:14px;">判断是否华为转移⽤户接⼝</span>
</h4>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
this.gamesdkInstance.isHuaweiTransferAccount()
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.10 注册SDK回调通知</span>
</h4>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//注册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},`)
//通过GameSDKUser⽤户类获取⽤户信息
promptAction.showDialog({ message: `uid:${GameSDKUser.getInstance().uid},
userName:${GameSDKUser.getInstance().userName}, token:${GameSDKUser.getInstance().token}`
})
});
//注册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(`华为账号解绑成功`)
});</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h3>
<span style="font-size:16px;">四、</span><span style="font-size:16px;">其他接⼝(选接)</span>
</h3>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">4.1 </span><span style="font-size:14px;">初始化微信QQ登录(选接)</span>
</h4>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//初始化微信登录
this.gamesdkInstance.initWxLogin("wxd6bxxxxxxxxxxx", "8606969ec8eb7ebxxxxxxxxxxxxx")
//初始化QQ登录
this.gamesdkInstance.initQQLogin("1022xxxxxx", "iNr8Hxxxxxxxx")
//在EntryAbility中响应来⾃微信/QQ的回调
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
GameSDKManager.getInstance('').handleAuthResult(want)
}</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;color:#E53333;">注意:</span>
</p>
<p>
<span style="font-size:14px;">微信登录时⼯程需要使⽤⼿动签名,不然会报错:"由于应⽤BundleID信息校验不通过,⽆法使⽤微信登录"</span><br />
<span style="font-size:14px;">QQ后台需要正确配置鸿蒙应⽤签名,不然会报错:"error authResponse is null"</span><br />
<span style="font-size:14px;">参考⽂档:https://wiki.connect.qq.com/harmonyos_sdk%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a</span><span style="font-size:14px;">2%98</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">module.json5 配置⽂件修改</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">// 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",
}
]
}
]</pre>
<span style="font-size:14px;"></span><br />
<span style="font-size:14px;"></span><span style="font-size:14px;">如下图:</span>
<p>
<br />
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20250425/20250425114626cJP9804.png" alt="" />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">在业务 Ability.onNewWant() 中调⽤SDK如下⽅法:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//在EntryAbility中响应来⾃微信/QQ的回调
GameSDKManager.getInstance('').handleAuthResult(want)</pre>
<span style="font-size:14px;"></span>
<p>
<br />
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20250425/20250425114720oKmx807.png" alt="" />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">4.2 SDK域名配置(选接)</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">当需要修改sdk的默认域名时,打开⼯程找到sdk配置⽂件,⽂件路径:</span>
</p>
<p>
<span style="font-size:14px;">oh_modules/gamesdklibrary/src/main/resources/rawfile/sdk_config.json,然后修改⽂件中mainurl对应的</span><span style="font-size:14px;">value值</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20250425/20250425114817vpCS920.png" alt="" />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">可参考SDK Demo 接⼊</span><span style="font-size:14px;"></span>
</p>
<p>
<br />
</p>
<div>
<br />
</div>