提交 c23dfa89 作者: 张峰

添加demo和文档

上级 7ae87da2
# 国内游戏鸿蒙客户端sdk对接文档
# 国内游戏鸿蒙客户端sdk对接文档
......@@ -30,7 +30,7 @@
``
ohpm config set registry  "http://8.149.138.39:9099/repos/ohpm,https://ohpm.openharmony.cn/ohpm"
``
2.在devecostudio里项目工程目录执行如下命令:
``
......@@ -58,16 +58,16 @@ ohpm install zwgame@0.3.7
2.宿主app的工程里,EntryAbility的onWindowStageCreate()方法里加入如下代码:
``
SDKToolsManager.getInstance().initSDK(windowStage,'深海花园游戏账号登录',$r('app.media.ic_float'),this.context,{
getPrivacyCallBack: (data: boolean): void => {
if (data) {
// 值为true代表同意
LogUtil.info('zfcs', '用户点击了隐私弹框的同意按钮')
}
}
})
setTimeout(()=>{
SDKToolsManager.getInstance().initSDK(windowStage,'深海花园游戏账号登录',$r('app.media.ic_float'),this.context, {
getPrivacyCallBack: (data: boolean): void => {
if (data) {
// 值为true代表同意
LogUtil.info('zfcs', '用户点击了隐私弹框的同意按钮')
}
} })
},500)
``
其中必传的四个参数,windowStage 对应window.WindowStage;thirdInfo: 三方账号信息名称;customerIcon: 三方游戏icon;context 对应 common.UIAbilityContext
......@@ -96,7 +96,8 @@ SDKToolsManager.getInstance().onForeground()
7.sdk登录的方法:
其中:SDKToolsManager.getInstance() 为获取当前工具的单例对象;showSdkLogin()的对应的参数依次为:当前宿主的上下文、华为联合登陆面板展示的游戏登录的标题内容、游戏图标(图标大小不能超过35KB)、是否显示悬浮球的状态回调接口(true:显示悬浮球;false:不显示悬浮球)、关闭华为联合登录面板的回调接口(1002000016是统一错误码,代表关闭了华为联合登录面板)
````
```
SDKToolsManager.getInstance()
.showSdkLogin(this.getUIContext(), '深海花园游戏账号登录', $r('app.media.ic_float'), {
getBooleanData: (isShowFloatBall: boolean): void => {
......@@ -109,7 +110,7 @@ SDKToolsManager.getInstance()
LogUtil.info('test', '用户关闭了联合登录面板')
}
} })
````
```
8.sdk退出登录:
该方法的入参为:是否显示悬浮球的接口回调,其中isShowFloatBall:false代表不显示悬浮球
......@@ -126,7 +127,7 @@ AppUtils.outLogin({
``
let jsonStr = '{"role":{"event":"other","server_id":"1","role_name":"主宰传奇","cp_role_id":"2","server_name":"主宰服","role_level":"83","role_vip":"0"},"order":{"cp_order_id":"1770709001026","amount":"100","product_price":"100","product_id":"com.product.test02","product_cnt":"1","product_name":"1元档充值","product_desc":"商品","ext":"测试数据"}}'
``
``
AppUtils.createOrderWithHuaWei(jsonStr, '1', '2', this.amount,this.product_price,this.product_cnt,'com.product.test02',
{
......@@ -142,26 +143,25 @@ AppUtils.createOrderWithHuaWei(jsonStr, '1', '2', this.amount,this.product_price
> 下单支付字段说明
| 名称 | 类型 | 是否必须 | 默认值|说明 |
|:--------------|-------:|-----:|-----:|-----------------:|
| cp_order_id | string | 必须 || CP订单ID |
| amount | number | 必须 | |商品总价(单位:分 |
| product_price | number | 必须 | |商品价格(整数,后台自动换算分) |
| product_id | String | 必须 |0| 商品ID |
| product_cnt | number | 必须 | |商品数量 |
| product_name | string | 必须 |""| 商品名称 |
| product_desc | string | 非必须 |""| 商品描述 |
| ext | string | 必须 |""| 订 调用方定义 单额外信息用(json)|
| event | string | 必须 |""| 事件|
| server_id | string | 必须 |0| 区服id |
| server_name | string | 必须 |""| 区服名称|
| cp_role_id | string | 必须 | cp角色id |
| role_name | string | 必须 | ""|角色名称 |
| role_level | string | 必须 |0| 角色等级 |
| role_vip | string | 必须 | 0|角色vip等级 |
| role_id | string | 必须 |0| 角色ID |
10.角色上报的方法:
| 名称 | 类型 | 是否必须 | 默认值 | 说明 |
|:------------- | ------:| ----:| ------:| --------------------:|
| cp_order_id | string | 必须 | | CP订单ID |
| amount | number | 必须 | | 商品总价(单位:分 |
| product_price | number | 必须 | | 商品价格(整数,后台自动换算分) |
| product_id | String | 必须 | 0 | 商品ID |
| product_cnt | number | 必须 | | 商品数量 |
| product_name | string | 必须 | "" | 商品名称 |
| product_desc | string | 非必须 | "" | 商品描述 |
| ext | string | 必须 | "" | 订 调用方定义 单额外信息用(json) |
| event | string | 必须 | "" | 事件 |
| server_id | string | 必须 | 0 | 区服id |
| server_name | string | 必须 | "" | 区服名称 |
| cp_role_id | string | 必须 | cp角色id | |
| role_name | string | 必须 | "" | 角色名称 |
| role_level | string | 必须 | 0 | 角色等级 |
| role_vip | string | 必须 | 0 | 角色vip等级 |
| role_id | string | 必须 | 0 | 角色ID |
| 10.角色上报的方法: | | | | |
``
const jsonStr = '{"cp_account":"cp_account","role":{"event":"create","server_id":"serviceId","server_name":"server_name","cp_role_id":"cpRoleId","role_name":"role_name","role_level":"role_level","role_vip":"role_vip","combat_num":"combatnum","online_time":"online_time","reiki_num":"reikinum","attack":"attack","profession":"profession","gang_name":"gang_name","trans_level":"translevel","sponsor_level":"sponsorlevel","main_city_level":"maincitylevel","power":"power","chapter_index":"chapterindex"}}'
......@@ -173,36 +173,35 @@ AppUtils.onRole('serviceId', 'cpRoleId', jsonStr);
参数说明
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | :---------------------------------------------------------- | :---- | :----- | :----- | :----------- |
> | event | true | String | other | 事件类型 |
> | server_id | true | String | - | 区服ID |
> | server_name | true | String | - | 区服名称 |
> | cp_role_id | true | String | - | 游戏方角色ID |
> | role_name | true | String | - | 游戏角色名称 |
> | role_level | true | Int | - | 角色等级 |
> | cp_account | false | String | - | cp账号 |
> | role_vip | false | Int | 0 | 角色VIP等级(赞助等级) |
> | combat_num | false | String | "0" | 角色战力 |
> | reiki_num | false | Int | 0 | 角色灵符值 |
> | online_time | false | Int | 0 | 本次在线时长 |
> | attack | false | Int | 0 | 攻击力 |
> | profession | false | String | - | 职业 |
> | gang_name | false | String | - | 帮会(行会)名称 |
> | trans_level | false | Int | 0 | 转生等级 |
>
>
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> |:----------- |:----- |:------ |:----- |:------------- |
> | event | true | String | other | 事件类型 |
> | server_id | true | String | - | 区服ID |
> | server_name | true | String | - | 区服名称 |
> | cp_role_id | true | String | - | 游戏方角色ID |
> | role_name | true | String | - | 游戏角色名称 |
> | role_level | true | Int | - | 角色等级 |
> | cp_account | false | String | - | cp账号 |
> | role_vip | false | Int | 0 | 角色VIP等级(赞助等级) |
> | combat_num | false | String | "0" | 角色战力 |
> | reiki_num | false | Int | 0 | 角色灵符值 |
> | online_time | false | Int | 0 | 本次在线时长 |
> | attack | false | Int | 0 | 攻击力 |
> | profession | false | String | - | 职业 |
> | gang_name | false | String | - | 帮会(行会)名称 |
> | trans_level | false | Int | 0 | 转生等级 |
事件类型event
| EVENT | 说明 |
| -------- | -------- |
| EVENT | 说明 |
| -------- | ---- |
| create | 创建角色 |
| online | 角色上线 |
| offline | 角色下线 |
| level_up | 角色升级 |
| delete | 删除角色 |
| recharge | 角色充值 |
| other | 其他 |
| other | 其他 |
11.悬浮按钮的集成方法:宿主app页面的build()根节点必须为stack,加入如下代码,可见性由sdk暴露标记值,需宿主app接收该标记:
``
......@@ -212,15 +211,12 @@ SuspensionV2().visibility(this.shoudleShowWindow ? Visibility.Visible : Visibili
.width('100%')
``
12.获取player_id的方法:
``
UserSDKManager.getInstance().getUserLoginInfo()
``
这个方法获取本地的缓存的数据,里面有player_id这个字段,遍历取'player_id'对应的值就可以拿到
13.服务端接口 调用方直接使用http 调用接口:<a name="sec5">
### 接口地址
......@@ -230,35 +226,34 @@ UserSDKManager.getInstance().getUserLoginInfo()
##### 请求参数
> **Headers**:
>
> | 参数 | 必选 | 参数值 | 说明 |
> | ------------ | ---- | ---------------- | ----------------------------------- |
> | Content-Type | true | application/json | |
>
> | 参数 | 必选 | 参数值 | 说明 |
> | ------------ | ---- | ---------------- | ---------------------- |
> | Content-Type | true | application/json | |
> | User-Token | true | | 登录后由 SDK 返回的user_token |
> **Body**:
>
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | --------- | ---- | ------ | ------ | --------------------------------- |
> | game_id | true | Int | - | 游戏接入时分配的游戏ID(建议从user_token中取,#后面的数字即为game_id)|
> | player_id | true | Int | - | 游戏登录后由 SDK 返回的player_id |
> | sign | true | String | - | 参数签名 |
>
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | --------- | ---- | ------ | --- | --------------------------------------------- |
> | game_id | true | Int | - | 游戏接入时分配的游戏ID(建议从user_token中取,#后面的数字即为game_id) |
> | player_id | true | Int | - | 游戏登录后由 SDK 返回的player_id |
> | sign | true | String | - | 参数签名 |
##### 返回参数
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | ----------- | ----- | ------ | ------ | -------------- |
> | status_code | true | Int | - | 状态码 1 正常在线,否则不允许登录|
> | msg | true | STRING | - | 返回信息 |
> | data | false | OBJECT | [] | 返回数据(空) |
>
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | ----------- | ----- | ------ | --- | -------------------- |
> | status_code | true | Int | - | 状态码 1 正常在线,否则不允许登录 |
> | msg | true | STRING | - | 返回信息 |
> | data | false | OBJECT | [] | 返回数据(空) |
##### 接口说明
调用方检测当前用户是否登录过,在线状态; 如果返回参数不是正常登录则不允许登录游戏。
##### 请求示例
```php
<php?
public function checkLogin(){
......@@ -288,7 +283,7 @@ UserSDKManager.getInstance().getUserLoginInfo()
}
public function curl_post($url, $body, $headers){
//初始化
//初始化
$curl = curl_init ( );
//设置抓取的url
curl_setopt ( $curl, CURLOPT_URL , $url);
......@@ -308,6 +303,17 @@ UserSDKManager.getInstance().getUserLoginInfo()
curl_close ( $curl );
//显示获得的数据
return json_decode($data, true);
}
}
```
QA:
1.华为登录失败:原因:图标大小超过了35KB。
2.支付失败:原因:总价价格传入不对,且数量默认只能是1件。
3.登录错误码1002000016:华为登录面板关闭的统一代码返回。
4.demo里的代码包含了游戏集成的所有步骤,请严格按照demo来集成。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论