跳到主要内容

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)

参数描述​

字段说明类型
controllerUnityController 的 rootViewController,用于显示 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.分享(选接)​

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

版本要求​

SDK 最低版本:v2.5.1

方法原型​

func socialShare(options: OmniSDKShareOptions, controller: UIViewController)

参数描述​

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

说明:支持分享本地图片/视频和 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取消分享