跳到主要内容
版本:国内SDK

国内游戏对接文档--鸿蒙

版本

当前版本1.0.0

SDK功能

  1. 登录。
  2. 支付
  3. 上报游戏角色信息,上报游戏事件
  4. 数数科技上报接口

1.SDK接入前准备工作

1.1接入前准备工作:发行中间层提供参数说明(参数由发行层技术提供)

参数类型参数描述
u8AppIDstring发行中间层分配的游戏id
u8AppKeystring发行中间层分配的游戏key
u8ChannelIDnumber发行中间层分配的游戏channelid
u8Urlstring发行中间层的服务端域名
taAppIDstring数数的appid
taServerUrlstring数数的服务端域名
appSecretstring发行中间层分配的游戏secret(服务端用到)

2.SDK快速接入

2.1 开发环境

1.鸿蒙开发环境

2.SDK相关的aar包

  • 把HuaweiSDK.har放到游戏工程主模块entry的libs目录下,并在entry的oh-package.json中添加依赖配置;

3.引用数数SDK

  • 执行命令:ohpm i @thinkingdata/analytics
  • 手动在oh-packages.json5中dependencies下添加依赖,然后IDE会提示ohpm install,点击安装:"@thinkingdata/analytics": "^1.3.0"

4.下载安装json-bigint: ohpm install json-bigint

5.设置华为渠道参数,运营提供

  • 在entry的module.json5中, 增加metadata参数项,如果已有metadata配置项,则在里面增加client_id和app_id两个配置项。
  • client_id: 华为App Connect后台,项目详情中的oauth 2.0的client_id参数;
  • app_id: 华为App Connect后台, 项目详情中的AppID参数
  "metadata": [
{
"name": "client_id",
"value": "109427833"
},
{
"name": "app_id",
"value": "1270103954604227136"
}
]

2.2 SDK初始化(必接)

initHuaweiSDK(context:Context,appInfo:AppInfoModel)

接口说明:

  • 初始化接口,应该在游戏主界面加载后第一时间调用,一般在EntryAbility的onWindowStageCreate生命周期函数中调用:
    // 文件头部先从HuaweiSDK.har中导入HuaweiSDKPlatfrom等对象
import {HuaweiSDKPlatfrom, HuaweiSDKError, AppInfoModel} from '@ohos/huaweisdk'

// 调用U8SDK 初始化接口
let appInfo:AppInfoModel = {
u8AppID: '124', //u8的appID
u8AppKey: '74cece415cf24b6aa2dc132a5e709e6f',//u8的appKey
u8ChannelID: 2349,//渠道号
u8Url: 'http://apitest.sy.faxing.ledu.com', //u8服务器地址
taAppID: '822bb3ff1009407ebd76ed1787717c54',//数数appID
taServerUrl: 'https://sskj-api.m-co.cn' //数数服务器地址
}
HuaweiSDKPlatfrom.getInstance().initHuaweiSDK(getContext(), appInfo)then(()=>{
// 初始化成功回调
hilog.debug(0x0000, 'huaweisdk', 'huaweisdk init success');
}).catch((err:HuaweiSDKError)=>{
// 初始化失败回调,err = {code: 1, msg: 'err msg'}
hilog.error(0x0000, 'huaweisdk', 'huaweisdk init failed:%{public}s', error.errorMsg);
});

2.3 登录接口(必接)

login()

接口说明:

  • 登录接口,打开SDK登录界面,登录成功或者失败,会触发相应的回调

调用示例:

    // 文件头部先从HuaweiSDK.har中导入HuaweiSDKPlatfrom等对象
import {Idata, HuaweiSDKPlatfrom, HuaweiSDKError,HuaweiRoleData, HuaweiRoleDataType, HuaweiPayParams} from '@ohos/huaweisdk';

HuaweiSDKPlatfrom.getInstance().login().then((result)=>{
let res: Idata<string> = result
if (res.statusCode === 0) {
Logger.info('登录成功=>' + JSON.stringify(result));
//res.data 是账号相关的数据,包含:userID,sdkUserID,和token
} else {
Logger.info('登录失败=>' + result);
}
}).catch((error:HuaweiSDKError)=>{
Logger.info('登录失败=>' + error.errorMsg);
})

2.4 上报游戏角色信息(必接)

备注:登录成功之后调用;调用的时候,暂时没有数据的参数值需要传默认值(自己定),不可传空。

submitExtraData(roleData:HuaweiRoleData)

接口说明:

  • 要求在 选择服务器,创建角色,登录游戏,角色升级等时刻,要上报游戏中玩家数据,以便后台统计用户数据。所以,游戏层需要在特定的地方多次调用该方法。

参数说明:

  • roleData:角色信息传递参数的对象

关于HuaweiRoleData对象:

参数名称参数类型参数说明
dataTypenumber上报类型,比如选择服务器,创建角色...
serverIDString玩家所在服务器的ID
serverNameString玩家所在服务器的名称
roleIDString玩家角色ID
roleNameString玩家角色名称
roleLevelString玩家角色等级
coinNumnumber当前角色身上拥有的游戏币数量
roleCreateTimenumber角色创建时间,单位秒,必须传入真实的数据
roleLevelUpTimenumber角色等级变化时间,从1970年到现在的时间,单位秒
vipString玩家vip等级

HuaweiRoleData中的dataType类型如下:

  • TYPE_SELECT_SERVER = 1; //选择服务器
  • TYPE_CREATE_ROLE = 2; //创建角色
  • TYPE_ENTER_GAME = 3; //进入游戏
  • TYPE_LEVEL_UP = 4; //等级提升

游戏必须要调用的类型如下: 1:选择服务器; 2:创建角色; 3:进入游戏; 4:等级提升;

调用示例:

    let roleInfo : HuaweiRoleData = {
dataType: HuaweiRoleDataType.TYPE_CREATE_ROLE,
roleID: '1000001',
roleName: '鸿蒙测试',
roleLevel: 1,
serverID: '1000001',
serverName: '鸿蒙测试',
vip: '1',
coinNum: 1,
roleCreateTime: 1722837931,
roleLevelUpTime: 1722837931
};
HuaweiSDKPlatfrom.getInstance().submitExtraData(roleInfo)

2.5 支付充值(必接)

 pay(payParams:HuaweiPayParams)

接口说明:

  • 充值接口,打开SDK充值界面。 充值成功或者失败,会触发相应的回调

参数说明:

  • payParams:支付参数的传递对象

关于HuaweiPayParams对象:

参数名称参数类型参数说明
productIdString充值商品ID,游戏内的商品ID
productNameString商品名称,比如100元宝,500钻石...
productDescString商品描述,比如 充值100元宝,赠送20元宝
pricenumber充值金额,单位:元
buyNumnumber购买数量,一般都是1
coinNumnumber玩家当前身上剩余的游戏币
serverIdString玩家所在服务器的ID
serverNameString玩家所在服务器的名称
roleIDString玩家角色ID
roleNameString玩家角色名称
roleLevelnumber玩家角色等级
vipString玩家vip等级
payNotifyUrlString游戏服务器支付回调地址,渠道SDK支付成功,异步通知U8Server,U8Server根据该地址,通知游戏服务器发货
extensionString支付成功之后,U8Server通知游戏服务器时,原样返回给游戏服务器。不要传null和"";长度不超过255

调用示例:

    let payParams: HuaweiPayParams = {
productId: 'com.mujoy.d7hy.6',
productName: '6元礼包',
productDesc: '6元礼包',
price: 6,
coinNum: 60,
buyNum: 60,
serverId: '1000001',
serverName: '测试1服',
roleId: '1000001',
roleName: '测试角色',
roleLevel: 1,
vip: '1',
extension: 'ccd691a3fd5244c7b7d04b0cc2b9bfd6',
payNotifyUrl: 'https://******/********'
}
HuaweiSDKPlatfrom.getInstance().pay(payParams).then((result)=>{
let res: Idata<string> = result
if (res.statusCode === 0) {
//showTips('支付成功')
}else {
//showTips('支付失败'+result.status)
}
}).catch((error:HuaweiSDKError)=>{
//showTips('支付失败=>' + error.errorMsg)
})

2.6 数数科技上报接口(必接)

submitTAUserInfo(eventType:number, eventName: string,
eventData: object)

接口说明:

  • 调用数数科技上报接口,上报事件和用户属性数据

参数说明:

  • eventType:上报类型(0:事件上报;1:用户数据上报set;2:用户数据上报setOnce;3:用户数据上报add);4:设置事件的公共属性;6:设置一次性事件上报;7:设置可更新事件上报
  • eventID:上报事件名(用户数据上报set,add,setOnce和设置公共属性时传null或"",事件上报不能为null和"")
  • eventData:上报属性数据(必传,不可传null)

调用示例:

    interface EventDataObject {
"mj_log_ceshi": string;
}


let eventData: EventDataObject = {
mj_log_ceshi: "ceshi"
};
HuaweiSDKPlatfrom.getInstance().submitTAUserInfo(1, "hongmeng_test",eventData)