跳到主要内容

API

API 使用说明

通过 OmniSDK.[API] 实现对应的功能,数据结构存放在 @omnisdk/omnisdk 资源包中。

以调用 OmniSDK 的 login 接口为例:

import { OmniSDK } from '@omnisdk/omnisdk'

OmniSDK.login();

API References

APIRequiredDescription
onDestroytrueAbility 销毁时调用
onForegroundtrueAbility 进入前台时调用
inittrue初始化 OmniSDK (所有的 API 都必须调用 init 成功后才有效)
logintrue调用 OmniSDK 登录,发起账号登录流程
getUserInfotrue获取用户登录信息
logouttrue调用 OmniSDK 登出,例如在用户点击退出账号时调用
setAccountNotifiertrue设置账号操作相关的结果回调
purchasetrue发起应用内购买流程
setPurchaseNotifiertrue设置支付结果回调
onEnterGametrue调用华为游戏联运 SDK,上报进入游戏事件
getSDKVersionfalse获取 OmniSDK 的版本号
getChannelIdfalse获取 OmniSDK 中的渠道 ID
getChannelNamefalse获取 OmniSDK 中的渠道名称
getAppIdfalse获取 OmniSDK 中游戏项目的 App ID

生命周期

onDestroy

Ability销毁时调用。

需要在游戏主 UIAbility 组件中对应的生命周期 onDestroy 中调用,且仅需要调用一次。

Signature

public static onDestroy(): void

Sample Code

Show Code
import { OmniSDK } from '@omnisdk/omnisdk';

onDestroy(): void {
// Ability has been destroy
super.onDestroy();
OmniSDK.onDestroy();
}

onForeground

Ability进入前台时调用。

需要在游戏主 UIAbility 组件中对应的生命周期 onForeground 中调用,且仅需要调用一次。

Signature

public static onForeground(): void

Sample Code

Show Code
import { OmniSDK } from '@omnisdk/omnisdk';

onForeground(): void {
// Ability has brought to foreground
super.onForeground();
OmniSDK.onForeground();
}

初始化

init

初始化 OmniSDK,在游戏客户端仅需调用一次。

提示
  • 必须在用户同意游戏侧的用户隐私指引之后调用,避免隐私合规问题。
  • 所有的 OmniSDK API 都必须在调用 init 成功后才能有效。

Signature

public static init(context: common.UIAbilityContext, initOptions: InitOptions) :void

Request

ParameterTypeRequiredDescription
contextcommon.UIAbilityContexttrueUIAbilityContext 是 UIAbility 的上下文环境,提供了访问应用程序资源、启动其他 Ability 等功能的接口
initOptionsInitOptionstrue初始化参数集合

InitOptions

PropertyTypeRequiredDescription
thinkingDataDistinctIdstringtrue数数的访客ID
notifierInitNotifiertrue初始化完成后的回调方法,用于接收初始化的结果

InitNotifier

PropertyTypeDescription
onSuccess()function接收到初始化成功的回调,初始化成功后才可调用 login 等其他 API
onFailure(
   sdkCodeMsg:[number, string],
   channelCodeMsg?: [number, string]
)
function接收到初始化失败回调:
- sdkCodeMsg(元组类型): OmniSDK 方 错误码 和错误文本信息
- channelCodeMsg(元组类型): 开发者错误码和错误文本信息,用于定位错误

Sample Code

Show Code
import { OmniSDK, InitNotifier, InitOptions } from '@omnisdk/omnisdk';

OmniSDK.init(this.context, new InitOptions('数数 访客ID', {
onSuccess(): void {
console.info('初始化成功');
},
onFailure(sdkCodeMsg: [number, string], channelCodeMsg?: [number, string]): void {
console.error(`初始化失败_SDK错误: ${sdkCodeMsg[0]} - ${sdkCodeMsg[1]}`);
console.error(`初始化失败_渠道错误: ${channelCodeMsg?.[0]} - ${channelCodeMsg?.[1]}`);
}
}));

账号登录

login

发起账号登录流程。

Signature

public static login(): void

Sample Code

Show Code
import { OmniSDK } from '@omnisdk/omnisdk';

OmniSDK.login();

logout

登出当前账号。

Signature

public static logout(): void

Sample Code

Show Code
import { OmniSDK } from '@omnisdk/omnisdk';

OmniSDK.logout();

setAccountNotifier

设置账号操作相关的结果回调,需要在调用 loginlogout 之前设置。

Signature

public static setAccountNotifier(notifier: AccountNotifier): void

Request

ParameterTypeRequiredDescription
notifierAccountNotifiertrue账号相关回调函数,用于接收处理结果

AccountNotifier

PropertyTypeDescription
onLoginSuccess()function用户登录账号成功
onLogoutSuccess()function用户登出账号成功
onFailure(
   sdkCodeMsg:[number, string],
   channelCodeMsg?: [number, string]
)
function登录失败处理:
- sdkCodeMsg(元组类型): OmniSDK 方 错误码 和错误文本信息
- channelCodeMsg(元组类型): huawei 渠道的错误码和错误文本信息
onKickedOut(forceLogout: boolean)function
- forceLogout:是否被强制(防沉迷原因,被动切换账号)退出账号

Sample Code

Show Code
import { OmniSDK, AccountNotifier } from '@omnisdk/omnisdk';

OmniSDK.setAccountNotifier({
onLoginSuccess(): void {
console.info('登录成功');
},

onLogoutSuccess(): void {
console.info('登出成功');
},

onFailure(sdkCodeMsg: [number, string], channelCodeMsg?: [number, string]): void {
console.error(`SDK错误: ${sdkCodeMsg[0]} - ${sdkCodeMsg[1]}`);
console.error(`渠道错误: ${channelCodeMsg?.[0]} - ${channelCodeMsg?.[1]}`);
},

onKickedOut(force: boolean): void {
console.warn(force ? '强制登出(防沉迷)' : '渠道主动登出');
},
});

getUserInfo

在登录成功之后调用,获取登录用户信息参数

Signature

public static getUserInfo(): UserInfo|undefined

Response

  • 用户未登录,返回 undefined
  • 用户登录成功后,返回 UserInfo

UserInfo

PropertyTypeDescription
cpUidstringOmniSDK 返回给游戏的账号 ID
verifySignstring登录账号数据的验证 Sign 值,出于安全考虑该数据不要进行本地数据库存储
verifyTimestampnumber验证Sign值产生的Unix时间戳,单位为秒;出于安全考虑该数据不要进行本地数据库存储

Sample Code

Show Code
import { OmniSDK, UserInfo } from '@omnisdk/omnisdk';

const loginInfo = OmniSDK.getUserInfo();
if (loginInfo) {
let cpUid = loginInfo.cpUid;
let verifySign = loginInfo.verifySign;
let verifyTimestamp = loginInfo.verifyTimestamp;
} else {
console.info("请先登录后再调用");
}

支付

purchase

发起应用内购买流程。

Signature

public static purchase(opts: PurchaseOptions): void

Request

ParameterTypeRequiredDescription
optsPurchaseOptionstrue支付参数集

PurchaseOptions

PropertyTypeRequiredDescription
productProducttrue商品信息

Product

PropertyTypeRequiredDescription
productIdstringtrue商品 ID:与所有后台商品 ID 保持一致,否则渠道无法拉起支付
productNamestringtrue商品名称:不能包含特殊字符
productDescstringtrue商品描述:不能包含特殊字符
productPricenumbertrue商品单价:单位:元
purchaseAmountnumbertrue实际支付总额:单位:元
serverIdstringtrue服务器 ID:必须为纯数字
roleIdstringtrue角色 ID
gameTradeNostringtrue游戏订单 ID:不可重复的字符串
gameCallbackUrlstringtrue支付回调地址:如果为空字符串,则使用后台配置的回调地址
extJsonstringtrue扩展参数:JSON 格式;无传空字符串

Sample Code

Show Code
import { OmniSDK, PurchaseOptions, Product } from '@omnisdk/omnisdk';

let product = new Product(
"1001", // productId
"钻石礼包", // productName
"内含 100 颗钻石", // productDesc
30, // productPrice
30, // purchaseAmount
"1", // serverId
"role_123", // roleId
"order_" + Date.now(), // gameTradeNo
"https://example.com/callback",// gameCallbackUrl
JSON.stringify({
channel: "huawei",
campaign: "summer_event"
}) // extJson
)
let opts = new PurchaseOptions(product)
OmniSDK.purchase(opts)

setPurchaseNotifier

设置支付结果回调,需要在调用 purchase 之前设置。

Signature

public static setPurchaseNotifier(notifier: PurchaseNotifier): void

Request

ParameterTypeRequiredDescription
notifierPurchaseNotifiertrue账号相关回调函数,用于接收处理结果

PurchaseNotifier

PropertyTypeDescription
onSuccess(order?: Order)function支付成功
- order(Order 类型): 订单信息,订单创建成功并正常启动支付模块的情况下一般一定会有;但未知异常下可能无值
onFailure(
   sdkCodeMsg:[number, string],
   channelCodeMsg?: [number, string],
   order?: Order
)
function支付失败处理:
- order(Order 类型): 订单信息,订单创建成功并正常启动支付模块的情况下一般一定会有;但未知异常下可能无值
- sdkCodeMsg(元组类型): OmniSDK 方错误码和错误文本信息
- channelCodeMsg(元组类型): huawei 渠道的错误码和错误文本信息

Order

PropertyTypeDescription
orderIdstring订单 ID
gameTradeNostring游戏订单 ID:不可重复的字符串
extJsonstring额外参数信息

Sample Code

Show Code
import { OmniSDK, PurchaseNotifier, Order } from '@omnisdk/omnisdk';

OmniSDK.setPurchaseNotifier({
onSuccess(order?: Order | undefined): void {
console.error(`order: ${order?.orderId}`);
},

onFailure(sdkCodeMsg: [number, string], channelCodeMsg?: [number, string],
order?: Order | undefined): void {
console.error(`支付失败:SDK错误: ${sdkCodeMsg[0]} - ${sdkCodeMsg[1]}`);
console.error(`渠道错误: ${channelCodeMsg?.[0]} - ${channelCodeMsg?.[1]}`);
console.error(`order: ${order?.orderId}`);
}
});

数据上报

onEnterGame

按照华为联运的审核要求,调用华为游戏联运 SDK,上报进入游戏事件。

Signature

public static onEnterGame(roleInfo: RoleInfo): void

Request

ParameterTypeRequiredDescription
roleInfoRoleInfotrue用户角色信息

RoleInfo

PropertyTypeRequiredDescription
uidstringtrue账号ID
roleIdstringtrue角色ID
roleNamestringtrue角色名称
serverIdstringtrue服ID:必须为纯数字
serverNamestringtrue服名称

Sample Code

Show Code
import { OmniSDK, RoleInfo } from '@omnisdk/omnisdk';

OmniSDK.onEnterGame(new RoleInfo('huawei_1111111', '123456', 'test', '1111', 'normal'));

其他

getSDKVersion

获取 OmniSDK 的版本号。

Signature

public static getSDKVersion(): string

Response

返回 OmniSDK 的版本号,示例:0.1.0

Sample Code

Show Code
import { OmniSDK } from '@omnisdk/omnisdk';

let version = OmniSDK.getSDKVersion();

getChannelId

获取 OmniSDK 中的渠道 ID。

Signature

public static getChannelId(): string

Response

返回 OmniSDK 中的渠道 ID,示例:10072

Sample Code

Show Code
import { OmniSDK } from '@omnisdk/omnisdk';

let cid = OmniSDK.getChannelId();

getChannelName

获取 OmniSDK 中的渠道名称。

Signature

public static getChannelName(): string

Response

返回 OmniSDK 中的渠道名称,示例:huawei_harmonyos

Sample Code

Show Code
import { OmniSDK } from '@omnisdk/omnisdk';

let cName = OmniSDK.getChannelName();

getAppId

获取 OmniSDK 中游戏项目的 App ID。

Signature

public static getAppId(): string

Response

返回 OmniSDK 中游戏项目的 App ID,示例:15985

Sample Code

Show Code
import { OmniSDK, RoleInfo } from '@omnisdk/omnisdk';

let appId = OmniSDK.getAppId();

ErrorCode

CodeDescription
400网络异常
500未知错误
999无结果数据
100000初始化失败
100010登录失败
100090登录取消
200050支付失败
200010支付取消
200053创建订单失败
200054商品信息错误