跳到主要内容

v2

提示
  • SDK 目前已更新至 v3 版本,v3 版本兼容 v2 的所有 API 且不需要做任何改动
  • 推荐使用强类型 v3 API,请参考 v3 迁移指南

API

1.初始化

版本要求

此接口需要 SDK 最低版本 v2.1.1 ,低版本请调用 老版本 API

v2.1.1 以上建议调用此 API 初始化 SDK,老版本 API 后续会逐渐淘汰

方法原型

public func sdkInitialize(options: OmniSDKOptions, delegate: OmniSDKCallBackDelegate)

参数描述

参数是否必填类型说明
delegate必填OmniSDKCallBackDelegate实现 OmniSDKCallBackDelegate 协议方法,监听 SDK 回调
options必填OmniSDKOptions透传参数

使用场景

  • SDK 所有接口都必须在初始化成功后才能调用
  • 只需要调用一次

代码示例

  1. 导入 OmniSDK 头文件,#import <OmniAPI/OmniAPI-Swift.h>
  2. 启动时调用初始化方法
OmniSDKOptions *options = [[OmniSDKOptions alloc] init];
[[OmniSDK shared] sdkInitializeWithOptions:options delegate: self];

回调监听

// 初始化成功
- (void)onInitNotifierSuccess {

}
// 初始化失败
- (void)onInitNotifierFailureWithResult:(NSString *)result{

}

返回值

2.登录

方法原型

func accountLogin(_ para: String, _ controller: UIViewController)

参数描述

字段说明类型
para国内传空字符串,海外 accountType 值传具体登录类型,String类型
1:游客登录
3:Facebook 登录
7:Apple 登录
23:Line 登录
54:Naver 登录
String
controllerUnityController 的 rootViewController,用于显示 SDKUIViewController

注意:para 参数是 JSON String

{
"accountType" : ""
}

使用场景

  • SDK 初始化成功,游戏内点击登录后调用

接入示例代码

[OmniSDK.shared accountLogin:json :self];

回调监听

//登录取消
- (void)onAccountLoginCancel {}
//登录成功
- (void)onAccountLoginSuccess {}
//登录失败
- (void)onAccountLoginFailureWithResult:(NSString *)result{}

返回值

3.获取用户信息

方法原型

public func getUserInfo() -> String?

使用场景

  • 登录成功后调用此方法,获取 SDK UserId 等信息

接入示例代码

NSString *userInfo = [[OmniSDK shared] getUserInfo];

返回值

{
"token": "8c45b75877b85e3a",
"certification": "2",
"verifySign": "31d9fa1ad945e8f185ccfb08a1d7682f5d62088f",
"channelid": "ios_jinshanApple",
"verifyTimestamp": 1667202625,
"uid": "ios_jinshanApple__671e0b20589d6437762243__EXP_.",
"cpUid": "ios_jinshanApple__671e0b20589d6437762243__EXP_."
}
字段说明类型
uiduserIDString
cpUidcpUidString
tokentokenString
verifySign签名String
verifyTimestamp时间戳Long
channelid渠道String
certification实名认证状态
0:成年未实名
1:未成年
2:成年已经实名
String

4.登出

方法原型

func accountLogout()

接入示例代码

[OmniSDK.shared accountLogout];

回调监听

// 成功回调
- (void)onAccountLogoutSuccess {}
// 失败回调
- (void)onAccountLogoutFailureWithResult:(NSString * _Nonnull)result {}

返回值

5.支付

方法原型

public func pay(_ para: String)

参数描述

{
"productId": "omniDemo.product6",
"roleId": "123",
"productDesc": "60钻石",
"totalAmount": 6,
"zoneId": "1服",
"productName": "钻石",
"gameCallbackUrl": "https://api.seayoo.io/omni/pout/test/cp_notify_ok",
"gameTradeNo": "1667207783",
"roleLevel": "1",
"productUnit": "钻石",
"roleVipLevel": "10",
"paidAmount": 6,
"roleName": "王宝强",
"productUnitPrice": 6,
"productQuantity": 1,
"serverId": "123"
}
参数是否必填类型说明
productIdYString商品ID
productNameYString商品名称
productDescYString商品描述
paidAmountYFloat实际支付总额,单位:元
productQuantityYInt购买数量
totalAmountYFloat商品总价,单位:元
productUnitPriceYFloat商品单价,单位:元
serverIdYString服务器ID
roleIdYString角色ID
gameTradeNoYString游戏订单号
gameCallbackUrlYString支付回调地址
extJsonNString扩展字段,JSON 格式字符串
zoneIdYString区ID
roleNameYString角色名称
roleLevelYString角色等级
roleVipLevelYString角色VIP等级
productUnitYString产品单位,元宝,钻石

接入示例代码

[OmniSDK.shared pay:json];

回调监听

//成功回调
- (void)onPaySuccessWithResult:(NSString *)result{}
//失败回调
- (void)onPayFailureWithResult:(NSString *)result{}
//取消回调
- (void)onPayCancelWithResult:(NSString *)result{}

返回值

6.进入游戏

方法原型

public func onEnterGame(_ para: String)

参数描述

使用场景

  • 选择完角色后调用

接入示例代码

[OmniSDK.shared onEnterGame:json];

7.创建角色

方法原型

public func onCreateRole(_ para: String)

参数描述

使用场景

  • 创建角色完成后调用

接入示例代码

[OmniSDK.shared onCreateRole:json];

8.游戏发货成功

方法原型

public func statisticsGameShippedFinish(_ para: String)

参数描述

使用场景

  • 游戏内发货成功后调用

接入示例代码

[OmniSDK.shared statisticsGameShippedFinish:json];

9.自定义买量数据付费上报(选接)

方法原型

public func statisticsPaidReportWithVolume(_ para: String)

参数描述

JSON 示例:

{
"roleInfo": { ... },
"data": {
"volumeData": "0",
"customParams": ""
}
}

参数说明:

参数是否必传类型说明
roleInfoYString角色信息
customParamsNString自定义参数
volumeDataYString消耗数量

roleInfo 数据结构见:RoleInfo

使用场景

  • 自定义买了数据付费上报,按需求接入

接入示例代码

[OmniSDK.shared statisticsPaidReportWithVolume:json];

10.打开用户中心

方法原型

func updateUserInfo(_ controller: UIViewController)

参数描述

字段说明类型
controllerUnityControllerrootViewController,用于显示 SDKUIViewController

使用场景

  • 游戏自定义入口调用此 API,用于重置密码,换绑手机

接入示例代码

[OmniSDK.shared updateUserInfo:self];

11.App 启动初始化 (选接)

方法原型

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?)

参数描述

字段说明类型
application系统参数UIApplication
launchOptions系统参数NSDictionary

使用场景

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

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

接入示例代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[OmniSDK shared] application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}

12.注销账号 (选接)

方法原型

func accountDelete(_ para: String)

参数描述

字段说明类型
para国内:传空字符串即可
海外:传 Json 字符串
- roleID:角色ID,String 类型
- serverID:服务器ID,String 类型
String

使用场景

  • 登录成功后,游戏提供入口按钮,点击后调用此 API,用于玩家注销账号

请求示例代码

[OmniSDK.shared accountDelete:@""];

13.收集日志(选接)

版本要求

SDK 最低版本:v2.4.0

使用场景

收集 SDK 运行期间产生的日志

接入示例代码

OmniSDKOptions *options = [[OmniSDKOptions alloc] init];
options.logCollectEnabled = YES;
[[OmniSDK shared] sdkInitializeWithOptions:options delegate: self];

回调监听

- (void)onCollectLogWithResult:(OmniSDKLogRecord *)result{
NSLog(@"logLevel = %@ msg = %@", result.level, result.msg);
}

14.分享(选接)

信息
  • 目前只支持系统分享功能,暂不支持 FacebookLine
  • 无需添加 OmniShare.framework
  • 如需使用 Facebook、Line 分享功能,请调用老版本 api

版本要求

SDK 最低版本:v2.5.1

方法原型

func socialShare(options: OmniSDKShareOptions, controller: UIViewController)

参数描述

参数是否必填类型说明
optionsYOmniSDKShareOptions分享参数
controllerYUIViewControllerUnityControllerrootViewController,用于显示分享

说明:支持分享本地图片/视频和 URL 链接

警告

QQ 不支持分享网络图片,微信不支持分享本地视频

使用场景

使用系统分享图片,链接等

接入示例代码

NSString *path = [[NSBundle mainBundle] pathForResource:@"sharePicture.png" ofType:nil];
NSURL *localUrl = [NSURL fileURLWithPath:path];
OmniSDKShareOptions *option = [[OmniSDKShareOptions alloc] initWithPlatform:PlatformSystem text:@"我是测试内容" url: localUrl];
[[OmniSDK shared] socialShareWithOptions:option controller:self];

回调监听

// 分享成功
- (void)onSocialShareSuccess {}
// 分享失败
- (void)onSocialShareFailureWithResult:(NSString * _Nonnull)result {}
// 取消分享
- (void)onSocialShareCancel {}

返回值

15. APP跳转

版本要求

SDK 最低版本:v2.4.6

方法原型

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool

参数描述

字段说明
app系统参数
url系统参数,通常是被其他应用或系统打开的 URL
options系统参数,附加信息

使用场景

从其他应用跳转到当前应用时调用,在 App 生命周期函数 application:openURL:options 内调用

备注:Unity 工程 application:openURL:options 函数在 UnityAppController.mm 类中

接入示例代码

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

SDK 数据结构

1.通用返回

JSON 示例:

{
"channel": {
"code": 999,
"msg": ""
},
"sdk": {
"code": 100000,
"msg": "加载配置文件失败"
}
}

字段说明:

字段说明
sdkSDK 返回的 code 和 msg
channel渠道返回的 code 和 msg,如 Apple Login 抛出的 Error

2.支付成功/失败

JSON 示例:

{
"sdk": {
"code": 0,
"msg": "success"
},
"channel": {
"code": 999,
"msg": ""
},
"product": {
"roleId": "123",
"roleVipLevel": "10",
"serverId": "123",
"productQuantity": 1,
"productUnitPrice": 6,
"roleLevel": "1",
"totalAmount": 6,
"gameCallbackUrl": "https:\/\/api.seayoo.io\/omni\/pout\/test\/cp_notify_ok",
"productId": "omniDemo.product6",
"productName": "6 钻石",
"productUnit": "钻石",
"roleName": "王宝强",
"zoneId": "1服",
"gameTradeNo": "1667202630",
"paidAmount": 6,
"productDesc": "60钻石"
},
"order": {
"gameTradeNo": "1667202630",
"orderId": "a22q231000701831"
}
}

参数说明:

字段说明
sdkSDK 返回的 code 和 msg
channel渠道返回的 code 和 msg ,如 Apple Pay 抛出的 Error
productcp 调用 pay 接口时传的 product
ordergameTradeNo:游戏订单号 orderId:SDK 订单号(可能为空字符串)

3.支付取消返回

JSON 示例:

{
"product": {
"roleId": "123",
"roleVipLevel": "10",
"serverId": "123",
"productQuantity": 1,
"productUnitPrice": 600,
"roleLevel": "1",
"totalAmount": 6,
"gameCallbackUrl": "https:\/\/api.seayoo.io\/omni\/pout\/test\/cp_notify_ok",
"productId": "omniDemo.product6",
"productName": "60 钻石",
"productUnit": "钻石",
"roleName": "王宝强",
"zoneId": "1服",
"gameTradeNo": "1667202630",
"paidAmount": 6,
"productDesc": "60钻石"
},
"gameTradeNo": "1667202630",
"orderId": "a22q231000701831"

}

参数说明:

productcp 调用 pay 接口时传的 product
gameTradeNo游戏订单号
orderIdSDK订单号

4.角色信息(RoleInfo)

JSON 示例:

{
"uid": "123",
"roleId": "123",
"zoneId": "1",
"accountAgeInGame": "22",
"serverName": "2服",
"roleLevel": "4",
"roleType": "射手",
"balance": "10",
"roleFigure": "fat",
"roleVipLevel": "3",
"partyName": "华中一",
"ageInGame": "12",
"ext": "",
"roleName": "刘666",
"zoneName": "华中区",
"serverId": "1",
"gender": "m"
}

参数说明

参数是否必传类型描述
uidYString账号ID
roleIdYString角色ID
roleLevelYString角色等级
roleNameYString角色名
roleTypeYString角色类型
roleVipLevelYString角色VIP等级
roleFigureYString体型
roleCreateTimeYString角色创建时间,时间戳,单位:秒
serverIdYString服ID
serverNameYString服名称
zoneIdYString区ID
zoneNameYString区名称
accountAgeInGameYString账号游戏年龄,单位:天
ageInGameYString角色游戏年龄,单位:天
balanceYString角色账户余额
genderYString性别
partyNameYString所在公会或帮派
extNString扩展字段

5.支付信息(PayInfo)

JSON 示例:

{
"productQuantity": 1,
"currencyName": "CNY",
"roleName": "王宝强",
"gameTradeNo": "1667288661",
"productDesc": "60钻石",
"partyName": "斧头帮",
"additionalParams": "",
"platTradeNo": "b22q291000702007",
"virtualCurrencyBalance": "999",
"productUnitPrice": 6,
"customInfo": "",
"productId": "omniDemo.product6",
"payAmount": 6,
"roleId": "123",
"serverId": "11",
"roleVipLevel": "1",
"paymentTypeName": "Apple",
"uid": "ios_jinshanApple__671e0b20589d6437762243__EXP_.",
"zoneId": "22",
"totalAmount": 6,
"productName": "60 钻石",
"roleLevel": "1",
"productUnit": "钻石"
}

参数说明:

参数是否必填类型说明
uidYString账号ID
productIdYString商品ID
productNameYString商品名称
productDescYString商品描述
productUnitYString产品单位,元宝,钻石
productUnitPriceYFloat商品单价,单位:元
productQuantityYInt购买数量
totalAmountYFloat商品总价,单位:元
payAmountYFloat付费金额,单位:元
currencyNameYString货币代码
roleIdYString角色ID
roleNameYString角色名
roleLevelYString角色等级
roleVipLevelYString角色VIP等级
serverIdYString服ID
zoneIdYString区ID
partyNameYString帮会名称
virtualCurrencyBalanceYString虚拟货币余额
customInfoNString扩展字段,订单支付成功后,透传给游戏
gameTradeNoYString游戏订单ID
paymentTypeNameYString支付类型
additionalParamsNString扩展字段
platTradeNoYStringSDK 订单ID

6.初始化参数 (OmniSDKOptions)

参数名是否必填类型默认值说明SDK 最低版本
toastEnabledNBoolfalse是否显示 SDK toast 弹窗2.1.1
toastDurationSecondsNInt2toast 弹窗时长(秒)2.1.1
logCollectEnabledNBoolfalse是否收集 SDK 日志2.4.0
logFileEnabledNBoolfalse是否写入日志文件到沙盒2.4.0

7.分享参数 (OmniSDKShareOptions)

参数名是否必填类型说明SDK 最低版本
platformY枚举分享平台
"PlatformSystem":系统分享
2.5.1
textNString分享内容2.5.1
urlNNSURL分享内容 URL2.5.1

Deprecated APIs

1.初始化

版本要求

SDK 最低版本:v2.0.0

方法原型

public func sdkInitialize(delegate: OmniSDKCallBackDelegate)

参数描述

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

使用场景

  • SDK 所有接口都必须在初始化成功后才能调用
  • 只需要调用一次

代码示例

  1. 导入 OmniSDK 头文件,#import <OmniAPI/OmniAPI-Swift.h>
  2. 启动时调用初始化方法
[[OmniSDK shared] sdkInitializeWithDelegate:self];

回调监听

// 初始化成功
- (void)onInitNotifierSuccess {

}
// 初始化失败
- (void)onInitNotifierFailureWithResult:(NSString *)result{

}

2.分享

版本要求

SDK 最低版本:v2.0.0

方法原型

func socialShare(_ para: String)

参数描述

参数是否必填类型说明
platformYString
"facebook": 分享到 Facebook
"line": 分享到 Line
分享平台
shareTitleNString分享类型
shareTextNString分享文本内容
shareImageURLNString分享图片地址
shareLinkURLNString分享链接地址
shareQuoteNStringfacebook 引用
shareHashTagNStringfacebook tag

使用场景

分享内容到 Facebook、Line

提示

需要添加 OmniShare.framework

接入示例代码

NSDictionary *dict = @{
@"platform":@"facebook",
@"shareImageURL":@"http://b.hiphotos.baidu.com/image/h%3D300/sign=77d1cd475d43fbf2da2ca023807fca1e/9825bc315c6034a8ef5250cec5134954082376c9.jpg",
@"shareQuote":@"引用说明,我是测试,facebook咋用",
@"shareTitle":@"测试",
@"shareHashTag":@"#话题标签",
};
NSString *json = [self converDictToJsonString:dict];
[OmniSDK.shared socialShare:json];

回调监听

// 分享成功
- (void)onSocialShareSuccess {}
// 分享失败
- (void)onSocialShareFailureWithResult:(NSString * _Nonnull)result {}
// 取消分享
- (void)onSocialShareCancel {}

返回值

错误码

code说明
400网络错误
500未知错误
999无数据
100000初始化失败
100010登录失败
100020登出失败
100090取消登录
0支付成功
200002验单失败
200010取消支付
200020外币支付
200050支付失败
200053创建订单失败
300010分享失败
300011取消分享