跳到主要内容

v3

API

所有的 API 使用都需要引入头文件 #import <OmniAPI/OmniAPI-Swift.h>

警告

v3.2.0 以上版本还需要引入头文件 #import <OmniCore/OmniCore-Swift.h>

1. 初始化

提示
  • SDK 初始化 API, 必须首先调用
  • App 生命周期内只需要调用一次
  • SDK 所有接口都必须在初始化成功后才能调用
OmniSDKOptions *options = [[OmniSDKOptions alloc] init];
options.delegate = self; // self 需要实现 OmniSDKDelegate 协议
[[OmniSDKv3 shared] startWithOptions:options];
API 回调结果监听
- (void)onStartWithResult:(OmniSDKStartResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}

参数

OmniSDKOptions
参数是否必填类型说明
delegateYOmniSDKDelegate实现 OmniSDKDelegate 协议方法,监听 SDK 回调

返回值

OmniSDKStartResult
参数类型说明
appIdstringOmniSDK AppId
planIdstringOmniSDK 发布计划
sdkVersionstringOmniSDK 版本号

2. 登录

提示
  • 推荐在游戏内点击登录时调用 (SDK 必须初始化成功)
[[OmniSDKv3 shared] loginWithController:self options:nil];
API 回调结果监听

回调监听

- (void)onLoginWithResult:(OmniSDKLoginResult *)result error:(OmniSDKError *)error  {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}

参数

参数是否必填类型说明
controllerYUIViewController
optionsNOmniSDKLoginOptions登录参数, 传 nil 则使用默认的 SDK 登录界面
OmniSDKLoginOptions
参数是否必填类型说明
authMethodYOmniSDKAuthMethod登录类型

返回值

OmniSDKLoginResult
参数类型说明
loginInfoOmniSDKLoginInfo登录信息

3. 获取用户信息

提示
  • 用户登录成功后,可获取登录信息 (如 userId 等等)
  • 登录失败时,此方法将返回 nil
  • 由于不同的分发渠道或平台,OmniSDKLoginInfo 中的某些字段可能会返回空值

接口调用

OmniSDKLoginInfo *info = [[OmniSDKv3 shared] getLoginInfo];

返回值

OmniSDKLoginInfo

4. 登出

提示
  • 当收到退出成功回调后, 游戏需要退出到游戏登录界面
  • 登出后,getLoginInfo 将会返回 nil 需要重新 login
[[OmniSDKv3 shared] logout];
API 回调结果监听
- (void)onLogoutWithResult:(OmniSDKLogoutResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}

返回值

OmniSDKLogoutResult
参数类型说明
userIdString用户 id

5. 打开账号中心

修改密码, 绑定手机, 切换账号...

接口调用

[[OmniSDKv3 shared] openAccountCenterWithController:self];

参数

参数是否必填类型说明
controllerYUIViewController
提示
  • 当用户以游客身份登录应用时,可能需要进行更安全或持久的身份验证方式,如绑定第三方账号(例如Facebook,AppleId等)。此时,可以调用此特定接口来触发对应的第三方账号授权页面。这将允许用户在安全的第三方环境中验证他们的身份,并将其与您的应用关联
  • 如果在调用此接口时,options 参数被设置为 nil ,则弹出SDK的关联账号页面。这是一个内建的页面,允许用户选择他们希望关联的账号类型。然后用户可以在此页面上选择第三方账号授权登录,进行身份验证和账号绑定

接口调用

OmniSDKLinkAccountOptions *options = [[OmniSDKLinkAccountOptions alloc] initWithIdp:OmniSDKIdentityProviderApple];
[[OmniSDKv3 shared] linkAccountWithOptions:options];
API 回调结果监听
- (void)onLinkAccountWithResult:(OmniSDKLinkAccountResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}

参数

参数是否必填类型说明
optionsNOmniSDKLinkAccountOptions关联账号参数, 传 nil 则拉起 SDK 绑定账号界面
OmniSDKLinkAccountOptions
参数是否必填类型说明
idpYOmniSDKIdentityProvider关联账号类型

返回值

OmniSDKLinkAccountResult
参数类型说明
idpOmniSDKIdentityProvider关联账号类型

7. 注销账号

提示

此接口目前无需传参, options 传 nil 即可

[[OmniSDKv3 shared] deleteAccountWithOptions:nil];
API 回调结果监听
- (void)onDeleteAccountWithResult:(OmniSDKDeleteAccountResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}

返回值

OmniSDKDeleteAccountResult
参数类型说明
userIdString用户 id

8. 恢复账号

提示

此接口目前无需传参, options 传 nil 即可

[OmniSDKv3.shared restoreAccountWithOptions:nil];
API 回调结果监听
- (void)onRestoreAccountWithResult:(OmniSDKRestoreAccountResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}

返回值

OmniSDKRestoreAccountResult
参数类型说明
userIdString用户 id

9. 购买商品

提示
OmniSDKPurchaseOptions *options = [[OmniSDKPurchaseOptions alloc] init];
options.productId = @"product01";
options.productName = @"魔石";
options.productDesc = "100 魔石";
options.productUnitPrice = 6;
options.purchaseAmount = 6;
options.purchaseQuantity = 1;
options.purchaseCallbackUrl = "http://callback.com";
options.gameCurrencyUnit = @"魔石";
options.gameOrderId = "7234895279837489";
options.gameRoleId = @"123";
options.gameRoleName = @"小王";
options.gameRoleLevel = @"99";
options.gameRoleVipLevel = @"v8";
options.gameZoneId = @"1区";
options.gameServerId = @"8服";
options.extJson = @"";

[[OmniSDKv3 shared] purchaseWithOptions:options];
API 回调结果监听
- (void)onPurchaseWithResult:(OmniSDKPurchaseResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}

参数

OmniSDKPurchaseOptions

返回值

OmniSDKPurchaseResult
参数类型说明
orderIdStringOmniSDK 生成的订单号
purchaseInfoOmniSDKPurchaseOptions购买信息

10. 数据上报

提示

上报游戏内的一些关键行为到 SDK

OmniSDKRoleInfo *role = [[OmniSDKRoleInfo alloc] init];
role.userId = @"123";
role.gameRoleId = @"11";
role.gameRoleName = @"小王";
role.gameRoleLevel = @"4";
role.gameRoleVipLevel = @"v8";
role.gameServerName = @"1服";
role.gameServerId = @"8区";
role.extJson = @"";

OmniSDKEnterGameEvent *event = [[OmniSDKEnterGameEvent alloc] init];
event.roleInfo = role;
[[OmniSDKv3 shared] trackEventWithEvent:event];

参数

进入游戏事件

OmniSDKEnterGameEvent

参数是否必填类型说明
roleInfoYOmniSDKRoleInfo游戏角色信息
创建角色事件

OmniSDKCreateRoleEvent

参数是否必填类型说明
roleInfoYOmniSDKRoleInfo游戏角色信息
角色升级事件

OmniSDKRoleLevelUpEvent

参数是否必填类型说明
roleInfoYOmniSDKRoleInfo游戏角色信息
购买商品事件

OmniSDKPurchaseEvent

参数是否必填类型说明
purchaseYOmniSDKPurchaseOptions购买信息
orderIdYStringSDK 订单号
userIdYStringSDK 账号 id

11. 捕获异常(选接)

捕获游戏内异常信息到 Sentry

OmniSDKCaptureMessage *message = [[OmniSDKCaptureMessage alloc] init];
message.payload = @"Test message for sentry capture.";
message.level = OmniSDKCaptureLevelError;
NSDictionary* extraData = @{
@"StackTrace": @"Stack trace information.",
@"Other": @"Other data."
};
message.extra = extraData;
[[OmniSDKv3 shared] captureWithMessage: message];

参数

参数是否必填类型说明
messageYOmniSDKCaptureMessage异常信息内容

效果参考

img

12. 社交分享(选接)

分享游戏内信息到第三方平台

OmniSDKSocialShareOptions *options = [[OmniSDKSocialShareOptions alloc] init];
options.platform = platform;
options.linkUrl = [NSURL URLWithString:@"https://developers.facebook.com"];
options.text = @"test share";
options.imageUrl = [NSURL URLWithString:@"https://lmg.jj20.com/up/allimg/4k/s/02/2109250006343S5-0-lp.jpg"];
[OmniSDKv3.shared socialShareWithController:self options:options];
API 回调结果监听
- (void)onSocialShareWithResult:(OmniSDKSocialShareResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}

参数

参数是否必填类型说明
controllerYUIViewController
optionsYOmniSDKSocialShareOptions分享参数
OmniSDKSocialShareOptions
参数是否必填类型说明
platformYOmniSDKSocialSharePlatform分享平台类型
textNString分享内容
imageUrlNNSUrl图片 url
linkUrlNNSUrl链接 url
quoteNString引用
tagsNString标签
OmniSDKSocialSharePlatform

分享平台类型

类型说明
OmniSDKSocialShareOptionsSystem调用系统分享
OmniSDKSocialShareOptionsFacebook分享到 facebook
OmniSDKSocialShareOptionsLine分享到 line

返回值

OmniSDKSocialShareResult

参数类型说明
optionsOmniSDKSocialShareOptions分享参数

13. APP启动初始化(选接)

程序启动时调用,在 App 生命周期函数 didFinishLaunchingWithOptions 内调用

备注:Unity 工程 didFinishLaunchingWithOptions 函数在 UnityAppController.mm 类中

[OmniSDKv3.shared application:application didFinishLaunchingWithOptions:launchOptions];

参数

字段说明
application系统参数
launchOptions系统参数

14. APP 跳转(选接)

提示
  • 程序跳转第三方 App 后返回游戏,在 App 生命周期函数 application 内调用

备注:Unity 工程 applicationOpenURLWithOptions 函数在 UnityAppController.mm 类中

[OmniSDK.shared application:app open:url options:options];

参数

字段说明
app系统参数
url系统参数
options系统参数

15. 预加载广告(选接)

SDK Version 3.3.0+

提示

此 API 需要添加 OmniTopOn 模块,集成方式详见 集成 SDK

  • 预加载只是提前加载广告,并不会显示广告,只有调用 showAd 接口才会显示广告
  • 建议在游戏加载场景的时候调用此接口

注意: 需要登录成功才能调用此接口

OmniSDKAdOptions *option = [[OmniSDKAdOptions alloc] init];
option.placementId = @"test_ios_RV_1";
[[OmniSDKv3 shared] preloadAdWithController:self options:option callback:^(OmniSDKPreloadAdResult * _Nullable result, OmniSDKError * _Nullable error) {
if (error != nil) {
// 失败
NSInteger code = error.code; // 错误码
NSString *message = error.message; // 错误信息
NSString *detailMessage = error.description; // 错误详细信息
} else {
// 成功
NSString *placementId = result.placementId;
}
}];

参数

参数是否必填类型说明
controllerYUIViewControllerUnity Controller
optionsYOmniSDKAdOptions预加载广告参数
callbackYBlock预加载广告回调
OmniSDKAdOptions
参数是否必填类型说明
placementIdYString广告位 ID, 由 OmniSDK 管理后台配置生成

返回值

OmniSDKPreloadAdResult
参数类型说明
placementIdString广告位 ID

16. 显示广告(选接)

SDK Version 3.3.0+

提示

此 API 需要添加 OmniTopOn 模块,集成方式详见 集成 SDK

  • 此 API 并不依赖 preloadAd 接口, 可以直接调用此 API 来显示广告
  • 为了优化体验, 建议先调用预加载广告接口提前加载广告

注意: 需要登录成功才能调用此接口

OmniSDKAdOptions *option = [[OmniSDKAdOptions alloc] init];
option.placementId = @"test_ios_RV_1";
[[OmniSDKv3 shared] showAdWithController:self options:option callback:^(OmniSDKShowAdResult * _Nullable result, OmniSDKError * _Nullable error) {
if (error != nil) {
// 失败
NSInteger code = error.code; // 错误码
NSString *message = error.message; // 错误信息
NSString *detailMessage = error.description; // 错误详细信息
} else {
// 成功
OmniSDKShowAdStatus status = result.status;
NSString *token = result.token;
}
}];

参数

参数是否必填类型说明
controllerYUIViewControllerUnity Controller
optionsYOmniSDKAdOptions显示广告参数
callbackYBlock显示广告回调
OmniSDKAdOptions
参数是否必填类型说明
placementIdYString广告位 ID, 由 OmniSDK 管理后台配置生成

返回值

OmniSDKShowAdResult
参数类型说明
statusOmniSDKShowAdStatus广告显示状态
tokenString第三方广告平台标识
OmniSDKShowAdStatus
参数类型说明
OmniSDKShowAdStatusStartEnum开始显示广告
OmniSDKShowAdStatusClickedEnum广告被点击
OmniSDKShowAdStatusClosedEnum广告被关闭
OmniSDKShowAdStatusRewardedEnum广告播放完成,发放奖励

SDK 数据结构

购买信息

OmniSDKPurchaseOptions
参数是否必填类型说明
productIdYString商品ID
productNameYString商品名称
productDescYString商品描述
productUnitPriceYFloat商品单价,单位:元
purchaseAmountYFloat预期支付总额,单位:元
purchaseQuantityYInt购买数量
purchaseCallbackUrlYString支付回调地址
gameOrderIdYString游戏订单ID,必传
extJsonNString交易扩展参数,JSON 格式字符串
gameCurrencyUnitYString游戏货币单位(如: 魔石, 钻石......)
gameRoleIdYString角色ID
gameRoleNameYString角色名称
gameRoleLevelYString角色等级
gameRoleVipLevelNString角色的VIP等级
gameZoneIdNString区ID
gameServerIdNString服ID

游戏角色信息

OmniSDKRoleInfo

参数是否必填类型说明
userIdYString账号ID
gameRoleIdYString角色ID
gameRoleNameYString角色名称
gameRoleLevelYString角色等级
gameRoleVipLevelNString角色VIP等级
gameServerNameYString服务器名称
gameServerIdYString服务器ID
extJsonNString角色扩展参数, JSON 字符串

SDK 登录信息

OmniSDKLoginInfo

参数类型说明
userIdString用户 ID
tokenStringtoken
channelIdString渠道 ID
authTimeStringUnix timestamp (服务端安全性验证使用)
signatureString签名 (服务端安全性验证使用)
authMethodOmniSDKAuthMethod登录类型
identityProviderOmniSDKIdentityProvider关联类型
stateOmniSDKAccountState账号状态

SDK 登录类型

OmniSDKAuthMethod

类型说明
OmniSDKAuthMethodGuest游客登录
OmniSDKAuthMethodAppleApple ID 登录
OmniSDKAuthMethodFacebookFacebook 登录

SDK 关联账号类型

OmniSDKIdentityProvider

类型说明
OmniSDKIdentityProviderApple关联 Apple ID
OmniSDKIdentityProviderFacebook关联 Facebook 账号
OmniSDKIdentityProviderUnknown未关联账号

SDK 账户状态

OmniSDKAccountState

类型说明
OmniSDKAccountStateNormal正常账号
OmniSDKAccountStateDeleting正在注销中

异常信息

OmniSDKCaptureMessage
参数是否必填类型说明
payloadYString详细记录异常或错误的信息,可提供关于发生问题的具体描述
levelYOmniSDKCaptureLevel定义异常或错误的严重性级别,可帮助分类和优先处理问题
extraNDictionary用于提供额外的上下文数据,可以包括任何有助于理解和解决问题的键值对信息

异常级别

OmniSDKCaptureLevel
类型说明
OmniSDKCaptureLevelDebug主要用于开发和调试过程中记录详细信息
OmniSDKCaptureLevelInfo用于记录常规操作和常规信息,这些信息在日常操作中可能有用
OmniSDKCaptureLevelWarning用于记录可能会导致问题的情况,但不一定会影响系统的正常运行
OmniSDKCaptureLevelError用于记录错误情况,这些错误可能会打断当前操作或者导致系统不能正常运行
OmniSDKCaptureLevelFatal用于记录严重错误或者称为致命错误的情况,这些错误可能会导致系统崩溃

OmniSDKError

数据结构

字段类型说明
codeIntSDK 错误码
messageString错误描述, 可用于弹出 toast
descriptionString详细错误信息, 可用于输出日志定位错误

使用场景

  • SDK 回调失败, 获取 SDK 错误信息

代码示例


- (void)onLoginWithResult:(OmniSDKLoginResult *)result error:(OmniSDKError *)error {
if (error == nil) {
NSString *userId = result.userId;
NSString *token = result.token;
...
} else {
NSInteger code = error.code
if (code == OmniSDKErrorCodeUserCancelled) {
// User Cancel.
return;
} else {
//.....
}
}
}

错误码

错误码枚举值错误描述
1000OmniSDKErrorCodeUnknownError未知错误
1001OmniSDKErrorCodeUserCancelled用户主动取消了操作
1002OmniSDKErrorCodeSystemError操作系统层面返回的错误
1003OmniSDKErrorCodeNetworkError网络错误
1004OmniSDKErrorCodeInvalidArgument参数不合法
1005OmniSDKErrorCodeServerError服务端错误
1006OmniSDKErrorCodeChannelError渠道侧 SDK 错误
2000OmniSDKErrorCodeInvalidAppBundlePlist应用的 Info.plist 参数配置错误
2001OmniSDKErrorCodeFetchAppConfigFailed向服务端请求应用参数失败
2002OmniSDKErrorCodeUnInitializedSDK 未初始化
3000OmniSDKErrorCodeLoginRestricted账号登录暂时被关闭,请稍后再试
3001OmniSDKErrorCodeUnsupportedAuthMethod不支持的登录方式
3002OmniSDKErrorCodeUnderageUserRestricted未成年人禁止登录
4000OmniSDKErrorCodePurchaseRestricted应用内购买暂时被关闭,请稍后再试
4001OmniSDKErrorCodeCreateOrderFailed创建订单失败
4002OmniSDKErrorCodeJailbreakRestricted越狱设备禁止购买
4003OmniSDKErrorCodeFetchProductsFailed获取商品信息失败
4004OmniSDKErrorCodeProductNotFound待购买的商品不存在
4005OmniSDKErrorCodeRegionRestricted当前国家或地区无法购买此商品
4006OmniSDKErrorCodeVerifyTransactionFailed支付订单验证失败
5000OmniSDKErrorCodeLoadAdvertisementFailed加载广告异常
5001OmniSDKErrorCodeShowAdvertisementFailed显示广告异常