v3
API
所有的 API 使用都需要引入头文件 #import <OmniAPI/OmniAPI-Swift.h>
警告
v3.2.0 以上版本还需要引入头文件 #import <OmniCore/OmniCore-Swift.h>
1. 初始化
提示
- SDK 初始化 API, 必须首先调用
- App 生命周期内只需要调用一次
- SDK 所有接口都必须在初始化成功后才能调用
- Objective-C
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
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
delegate | Y | OmniSDKDelegate | 实现 OmniSDKDelegate 协议方法,监听 SDK 回调 |
返回值
OmniSDKStartResult
参数 | 类型 | 说明 |
---|---|---|
appId | string | OmniSDK AppId |
planId | string | OmniSDK 发布计划 |
sdkVersion | string | OmniSDK 版本号 |
2. 登录
提示
- 推荐在游戏内点击登录时调用 (SDK 必须初始化成功)
- Objective-C
[[OmniSDKv3 shared] loginWithController:self options:nil];
API 回调结果监听
回调监听
- (void)onLoginWithResult:(OmniSDKLoginResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}
参数
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
controller | Y | UIViewController | |
options | N | OmniSDKLoginOptions | 登录参数, 传 nil 则使用默认的 SDK 登录界面 |
OmniSDKLoginOptions
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
authMethod | Y | OmniSDKAuthMethod | 登录类型 |
返回值
OmniSDKLoginResult
参数 | 类型 | 说明 |
---|---|---|
loginInfo | OmniSDKLoginInfo | 登录信息 |
3. 获取用户信息
提示
- 用户登录成功后,可获取登录信息 (如 userId 等等)
- 登录失败时,此方法将返回
nil
- 由于不同的分发渠道或平台,OmniSDKLoginInfo 中的某些字段可能会返回空值
接口调用
- Objective-C
OmniSDKLoginInfo *info = [[OmniSDKv3 shared] getLoginInfo];
返回值
4. 登出
提示
- 当收到退出成功回调后, 游戏需要退出到游戏登录界面
- 登出后,
getLoginInfo
将会返回nil
需要重新login
- Objective-C
[[OmniSDKv3 shared] logout];
API 回调结果监听
- (void)onLogoutWithResult:(OmniSDKLogoutResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}
返回值
OmniSDKLogoutResult
参数 | 类型 | 说明 |
---|---|---|
userId | String | 用户 id |
5. 打开账号中心
修改密码, 绑定手机, 切换账号...
接口调用
- Objective-C
[[OmniSDKv3 shared] openAccountCenterWithController:self];
参数
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
controller | Y | UIViewController |
6. 关联已有账号
提示
- 当用户以游客身份登录应用时,可能需要进行更安全或持久的身份验证方式,如绑定第三方账号(例如Facebook,AppleId等)。此时,可以调用此特定接口来触发对应的第三方账号授权页面。这将允许用户在安全的第三方环境中验证他们的身份,并将其与您的应用关联
- 如果在调用此接口时,options 参数被设置为 nil ,则弹出SDK的关联账号页面。这是一个内建的页面,允许用户选择他们希望关联的账号类型。然后用户可以在此页面上选择第三方账号授权登录,进行身份验证和账号绑定
接口调用
- Objective-C
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);
}
}
参数
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
options | N | OmniSDKLinkAccountOptions | 关联账号参数, 传 nil 则拉起 SDK 绑定账号界面 |
OmniSDKLinkAccountOptions
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
idp | Y | OmniSDKIdentityProvider | 关联账号类型 |
返回值
OmniSDKLinkAccountResult
参数 | 类型 | 说明 |
---|---|---|
idp | OmniSDKIdentityProvider | 关联账号类型 |
7. 注销账号
提示
此接口目前无需传参, options 传 nil
即可
- Objective-C
[[OmniSDKv3 shared] deleteAccountWithOptions:nil];
API 回调结果监听
- (void)onDeleteAccountWithResult:(OmniSDKDeleteAccountResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}
返回值
OmniSDKDeleteAccountResult
参数 | 类型 | 说明 |
---|---|---|
userId | String | 用户 id |
8. 恢复账号
提示
此接口目前无需传参, options 传 nil
即可
- Objective-C
[OmniSDKv3.shared restoreAccountWithOptions:nil];
API 回调结果监听
- (void)onRestoreAccountWithResult:(OmniSDKRestoreAccountResult *)result error:(OmniSDKError *)error {
if (error == nil) {
// 成功
} else {
// 失败
NSLog(@"%@", error.message);
}
}
返回值
OmniSDKRestoreAccountResult
参数 | 类型 | 说明 |
---|---|---|
userId | String | 用户 id |
9. 购买商品
提示
- 购买游戏内的商品时调用
- 请按照参数描述中的要求给必传字段赋值, 否则 SDK 将会回调 OmniSDKErrorCodeInvalidArgument 错误
- Objective-C
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);
}
}
参数
返回值
OmniSDKPurchaseResult
参数 | 类型 | 说明 |
---|---|---|
orderId | String | OmniSDK 生成的订单号 |
purchaseInfo | OmniSDKPurchaseOptions | 购买信息 |
10. 数据上报
提示
上报游戏内的一些关键行为到 SDK
- 进入游戏时传 OmniSDKEnterGameEvent
- 创建角色时传 OmniSDKCreateRoleEvent
- 角色升级时传 OmniSDKRoleLevelUpEvent
- 当收到 SDK 支付成功回调后, 游戏内发货成功时传 OmniSDKPurchaseEvent
- 建议给 OmniSDKRoleInfo 中所有的属性赋值, 这样方便后续数据分析, 如游戏机制原因无法获取, 该字段可不用赋值
- Objective-C
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
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
roleInfo | Y | OmniSDKRoleInfo | 游戏角色信息 |
创建角色事件
OmniSDKCreateRoleEvent
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
roleInfo | Y | OmniSDKRoleInfo | 游戏角色信息 |
角色升级事件
OmniSDKRoleLevelUpEvent
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
roleInfo | Y | OmniSDKRoleInfo | 游戏角色信息 |
购买商品事件
OmniSDKPurchaseEvent
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
purchase | Y | OmniSDKPurchaseOptions | 购买信息 |
orderId | Y | String | SDK 订单号 |
userId | Y | String | SDK 账号 id |
11. 捕获异常(选接)
捕获游戏内异常信息到 Sentry
- Objective-C
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];
参数
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
message | Y | OmniSDKCaptureMessage | 异常信息内容 |
效果参考
- payload
- level
- extra
12. 社交分享(选接)
分享游戏内信息到第三方平台
- Objective-C
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);
}
}
参数
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
controller | Y | UIViewController | |
options | Y | OmniSDKSocialShareOptions | 分享参数 |
OmniSDKSocialShareOptions
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
platform | Y | OmniSDKSocialSharePlatform | 分享平台类型 |
text | N | String | 分享内容 |
imageUrl | N | NSUrl | 图片 url |
linkUrl | N | NSUrl | 链接 url |
quote | N | String | 引用 |
tags | N | String | 标签 |
OmniSDKSocialSharePlatform
分享平台类型
类型 | 说明 |
---|---|
OmniSDKSocialShareOptionsSystem | 调用系统分享 |
OmniSDKSocialShareOptionsFacebook | 分享到 facebook |
OmniSDKSocialShareOptionsLine | 分享到 line |
返回值
OmniSDKSocialShareResult
参数 | 类型 | 说明 |
---|---|---|
options | OmniSDKSocialShareOptions | 分享参数 |
13. APP启动初始化(选接)
程序启动时调用,在 App 生命周期函数 didFinishLaunchingWithOptions
内调用
备注:Unity 工程
didFinishLaunchingWithOptions
函数在UnityAppController.mm
类中
- Objective-C
[OmniSDKv3.shared application:application didFinishLaunchingWithOptions:launchOptions];
参数
字段 | 说明 |
---|---|
application | 系统参数 |
launchOptions | 系统参数 |
14. APP 跳转(选接)
提示
- 程序跳转第三方 App 后返回游戏,在 App 生命周期函数 application 内调用
备注:Unity 工程 applicationOpenURLWithOptions 函数在
UnityAppController.mm
类中
- Objective-C
[OmniSDK.shared application:app open:url options:options];
参数
字段 | 说明 |
---|---|
app | 系统参数 |
url | 系统参数 |
options | 系统参数 |
15. 预加载广告(选接)
SDK Version 3.3.0+
提示
- Objective-C
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;
}
}];
参数
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
controller | Y | UIViewController | Unity Controller |
options | Y | OmniSDKAdOptions | 预加载广告参数 |
callback | Y | Block | 预加载广告回调 |
OmniSDKAdOptions
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
placementId | Y | String | 广告位 ID, 由 OmniSDK 管理后台配置生成 |
返回值
OmniSDKPreloadAdResult
参数 | 类型 | 说明 |
---|---|---|
placementId | String | 广告位 ID |
16. 显示广告(选接)
SDK Version 3.3.0+
提示
- Objective-C
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;
}
}];
参数
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
controller | Y | UIViewController | Unity Controller |
options | Y | OmniSDKAdOptions | 显示广告参数 |
callback | Y | Block | 显示广告回调 |
OmniSDKAdOptions
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
placementId | Y | String | 广告位 ID, 由 OmniSDK 管理后台配置生成 |
返回值
OmniSDKShowAdResult
参数 | 类型 | 说明 |
---|---|---|
status | OmniSDKShowAdStatus | 广告显示状态 |
token | String | 第三方广告平台标识 |
OmniSDKShowAdStatus
参数 | 类型 | 说明 |
---|---|---|
OmniSDKShowAdStatusStart | Enum | 开始显示广告 |
OmniSDKShowAdStatusClicked | Enum | 广告被点击 |
OmniSDKShowAdStatusClosed | Enum | 广告被关闭 |
OmniSDKShowAdStatusRewarded | Enum | 广告播放完成,发放奖励 |
SDK 数据结构
购买信息
OmniSDKPurchaseOptions
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
productId | Y | String | 商品ID |
productName | Y | String | 商品名称 |
productDesc | Y | String | 商品描述 |
productUnitPrice | Y | Float | 商品单价,单位:元 |
purchaseAmount | Y | Float | 预期支付总额,单位:元 |
purchaseQuantity | Y | Int | 购买数量 |
purchaseCallbackUrl | Y | String | 支付回调地址 |
gameOrderId | Y | String | 游戏订单ID,必传 |
extJson | N | String | 交易扩展参数,JSON 格式字符串 |
gameCurrencyUnit | Y | String | 游戏货币单位(如: 魔石, 钻石......) |
gameRoleId | Y | String | 角色ID |
gameRoleName | Y | String | 角色名称 |
gameRoleLevel | Y | String | 角色等级 |
gameRoleVipLevel | N | String | 角色的VIP等级 |
gameZoneId | N | String | 区ID |
gameServerId | N | String | 服ID |
游戏角色信息
OmniSDKRoleInfo
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
userId | Y | String | 账号ID |
gameRoleId | Y | String | 角色ID |
gameRoleName | Y | String | 角色名称 |
gameRoleLevel | Y | String | 角色等级 |
gameRoleVipLevel | N | String | 角色VIP等级 |
gameServerName | Y | String | 服务器名称 |
gameServerId | Y | String | 服务器ID |
extJson | N | String | 角色扩展参数, JSON 字符串 |
SDK 登录信息
OmniSDKLoginInfo
参数 | 类型 | 说明 |
---|---|---|
userId | String | 用户 ID |
token | String | token |
channelId | String | 渠道 ID |
authTime | String | Unix timestamp (服务端安全性验证使用) |
signature | String | 签名 (服务端安全性验证使用) |
authMethod | OmniSDKAuthMethod | 登录类型 |
identityProvider | OmniSDKIdentityProvider | 关联类型 |
state | OmniSDKAccountState | 账号状态 |
SDK 登录类型
OmniSDKAuthMethod
类型 | 说明 |
---|---|
OmniSDKAuthMethodGuest | 游客登录 |
OmniSDKAuthMethodApple | Apple ID 登录 |
OmniSDKAuthMethodFacebook | Facebook 登录 |
SDK 关联账号类型
OmniSDKIdentityProvider
类型 | 说明 |
---|---|
OmniSDKIdentityProviderApple | 关联 Apple ID |
OmniSDKIdentityProviderFacebook | 关联 Facebook 账号 |
OmniSDKIdentityProviderUnknown | 未关联账号 |
SDK 账户状态
OmniSDKAccountState
类型 | 说明 |
---|---|
OmniSDKAccountStateNormal | 正常账号 |
OmniSDKAccountStateDeleting | 正在注销中 |
异常信息
OmniSDKCaptureMessage
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
payload | Y | String | 详细记录异常或错误的信息,可提供关于发生问题的具体描述 |
level | Y | OmniSDKCaptureLevel | 定义异常或错误的严重性级别,可帮助分类和优先处理问题 |
extra | N | Dictionary | 用于提供额外的上下文数据,可以包括任何有助于理解和解决问题的键值对信息 |
异常级别
OmniSDKCaptureLevel
类型 | 说明 |
---|---|
OmniSDKCaptureLevelDebug | 主要用于开发和调试过程中记录详细信息 |
OmniSDKCaptureLevelInfo | 用于记录常规操作和常规信息,这些信息在日常操作中可能有用 |
OmniSDKCaptureLevelWarning | 用于记录可能会导致问题的情况,但不一定会影响系统的正常运行 |
OmniSDKCaptureLevelError | 用于记录错误情况,这些错误可能会打断当前操作或者导致系统不能正常运行 |
OmniSDKCaptureLevelFatal | 用于记录严重错误或者称为致命错误的情况,这些错误可能会导致系统崩溃 |
OmniSDKError
数据结构
字段 | 类型 | 说明 |
---|---|---|
code | Int | SDK 错误码 |
message | String | 错误描述, 可用于弹出 toast |
description | String | 详细错误信息, 可用于输出日志定位错误 |
使用场景
- 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 {
//.....
}
}
}
错误码
错误码 | 枚举值 | 错误描述 |
---|---|---|
1000 | OmniSDKErrorCodeUnknownError | 未知错误 |
1001 | OmniSDKErrorCodeUserCancelled | 用户主动取消了操作 |
1002 | OmniSDKErrorCodeSystemError | 操作系统层面返回的错误 |
1003 | OmniSDKErrorCodeNetworkError | 网络错误 |
1004 | OmniSDKErrorCodeInvalidArgument | 参数不合法 |
1005 | OmniSDKErrorCodeServerError | 服务端错误 |
1006 | OmniSDKErrorCodeChannelError | 渠道侧 SDK 错误 |
2000 | OmniSDKErrorCodeInvalidAppBundlePlist | 应用的 Info.plist 参数配置错误 |
2001 | OmniSDKErrorCodeFetchAppConfigFailed | 向服务端请求应用参数失败 |
2002 | OmniSDKErrorCodeUnInitialized | SDK 未初始化 |
3000 | OmniSDKErrorCodeLoginRestricted | 账号登录暂时被关闭,请稍后再试 |
3001 | OmniSDKErrorCodeUnsupportedAuthMethod | 不支持的登录方式 |
3002 | OmniSDKErrorCodeUnderageUserRestricted | 未成年人禁止登录 |
4000 | OmniSDKErrorCodePurchaseRestricted | 应用内购买暂时被关闭,请稍后再试 |
4001 | OmniSDKErrorCodeCreateOrderFailed | 创建订单失败 |
4002 | OmniSDKErrorCodeJailbreakRestricted | 越狱设备禁止购买 |
4003 | OmniSDKErrorCodeFetchProductsFailed | 获取商品信息失败 |
4004 | OmniSDKErrorCodeProductNotFound | 待购买的商品不存在 |
4005 | OmniSDKErrorCodeRegionRestricted | 当前国家或地区无法购买此商品 |
4006 | OmniSDKErrorCodeVerifyTransactionFailed | 支付订单验证失败 |
5000 | OmniSDKErrorCodeLoadAdvertisementFailed | 加载广告异常 |
5001 | OmniSDKErrorCodeShowAdvertisementFailed | 显示广告异常 |