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 所有接口都必须在初始化成功后才能调用
- 只需要调用一次
代码示例
- 导入 OmniSDK 头文件,
#import <OmniAPI/OmniAPI-Swift.h>
- 启动时调用初始化方法
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 |
controller | UnityController 的 rootViewController,用于显示 SDK | UIViewController |
注意: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_."
}
字段 | 说明 | 类型 |
---|---|---|
uid | userID | String |
cpUid | cpUid | String |
token | token | String |
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"
}
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
productId | Y | String | 商品ID |
productName | Y | String | 商品名称 |
productDesc | Y | String | 商品描述 |
paidAmount | Y | Float | 实际支付总额,单位:元 |
productQuantity | Y | Int | 购买数量 |
totalAmount | Y | Float | 商品总价,单位:元 |
productUnitPrice | Y | Float | 商品单价,单位:元 |
serverId | Y | String | 服务器ID |
roleId | Y | String | 角色ID |
gameTradeNo | Y | String | 游戏订单号 |
gameCallbackUrl | Y | String | 支付回调地址 |
extJson | N | String | 扩展字段,JSON 格式字符串 |
zoneId | Y | String | 区ID |
roleName | Y | String | 角色名称 |
roleLevel | Y | String | 角色等级 |
roleVipLevel | Y | String | 角色VIP等级 |
productUnit | Y | String | 产品单位,元宝,钻石 |
接入示例代码
[OmniSDK.shared pay:json];
回调监听
//成功回调
- (void)onPaySuccessWithResult:(NSString *)result{}
//失败回调
- (void)onPayFailureWithResult:(NSString *)result{}
//取消回调
- (void)onPayCancelWithResult:(NSString *)result{}
返回值
6.进入游戏
方法原型
public func onEnterGame(_ para: String)
参数描述
- JSON 字符串,详见:RoleInfo
使用场景
- 选择完角色后调用
接入示例代码
[OmniSDK.shared onEnterGame:json];
7.创建角色
方法原型
public func onCreateRole(_ para: String)
参数描述
- JSON 字符串,详见:RoleInfo
使用场景
- 创建角色完成后调用
接入示例代码
[OmniSDK.shared onCreateRole:json];
8.游戏发货成功
方法原型
public func statisticsGameShippedFinish(_ para: String)
参数描述
- JSON 字符串,详见:PayInfo
使用场景
- 游戏内发货成功后调用
接入示例代码
[OmniSDK.shared statisticsGameShippedFinish:json];
9.自定义买量数据付费上报(选接)
方法原型
public func statisticsPaidReportWithVolume(_ para: String)
参数描述
JSON 示例:
{
"roleInfo": { ... },
"data": {
"volumeData": "0",
"customParams": ""
}
}
参数说明:
参数 | 是否必传 | 类型 | 说明 |
---|---|---|---|
roleInfo | Y | String | 角色信息 |
customParams | N | String | 自定义参数 |
volumeData | Y | String | 消耗数量 |
roleInfo 数据结构见:RoleInfo
使用场景
- 自定义买了数据付费上报,按需求接入
接入示例代码
[OmniSDK.shared statisticsPaidReportWithVolume:json];
10.打开用户中心
方法原型
func updateUserInfo(_ controller: UIViewController)
参数描述
字段 | 说明 | 类型 |
---|---|---|
controller | UnityController 的 rootViewController ,用于显示 SDK | UIViewController |
使用场景
- 游戏自定义入口调用此 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)
参数描述
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
options | Y | OmniSDKShareOptions | 分享参数 |
controller | Y | UIViewController | UnityController 的 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": "加载配置文件失败"
}
}
字段说明:
字段 | 说明 |
---|---|
sdk | SDK 返回的 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"
}
}
参数说明:
字段 | 说明 |
---|---|
sdk | SDK 返回的 code 和 msg |
channel | 渠道返回的 code 和 msg ,如 Apple Pay 抛出的 Error |
product | cp 调用 pay 接口时传的 product |
order | gameTradeNo:游戏订单号 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"
}
参数说明:
product | cp 调用 pay 接口时传的 product |
---|---|
gameTradeNo | 游戏订单号 |
orderId | SDK订单号 |
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"
}
参数说明
参数 | 是否必传 | 类型 | 描述 |
---|---|---|---|
uid | Y | String | 账号ID |
roleId | Y | String | 角色ID |
roleLevel | Y | String | 角色等级 |
roleName | Y | String | 角色名 |
roleType | Y | String | 角色类型 |
roleVipLevel | Y | String | 角色VIP等级 |
roleFigure | Y | String | 体型 |
roleCreateTime | Y | String | 角色创建时间,时间戳,单位:秒 |
serverId | Y | String | 服ID |
serverName | Y | String | 服名称 |
zoneId | Y | String | 区ID |
zoneName | Y | String | 区名称 |
accountAgeInGame | Y | String | 账号游戏年龄,单位:天 |
ageInGame | Y | String | 角色游戏年龄,单位:天 |
balance | Y | String | 角色账户余额 |
gender | Y | String | 性别 |
partyName | Y | String | 所在公会或帮派 |
ext | N | String | 扩展字段 |
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": "钻石"
}
参数说明:
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
uid | Y | String | 账号ID |
productId | Y | String | 商品ID |
productName | Y | String | 商品名称 |
productDesc | Y | String | 商品描述 |
productUnit | Y | String | 产品单位,元宝,钻石 |
productUnitPrice | Y | Float | 商品单价,单位:元 |
productQuantity | Y | Int | 购买数量 |
totalAmount | Y | Float | 商品总价,单位:元 |
payAmount | Y | Float | 付费金额,单位:元 |
currencyName | Y | String | 货币代码 |
roleId | Y | String | 角色ID |
roleName | Y | String | 角色名 |
roleLevel | Y | String | 角色等级 |
roleVipLevel | Y | String | 角色VIP等级 |
serverId | Y | String | 服ID |
zoneId | Y | String | 区ID |
partyName | Y | String | 帮会名称 |
virtualCurrencyBalance | Y | String | 虚拟货币余额 |
customInfo | N | String | 扩展字段,订单支付成功后,透传给游戏 |
gameTradeNo | Y | String | 游戏订单ID |
paymentTypeName | Y | String | 支付类型 |
additionalParams | N | String | 扩展字段 |
platTradeNo | Y | String | SDK 订单ID |
6.初始化参数 (OmniSDKOptions)
参数名 | 是否必填 | 类型 | 默认值 | 说明 | SDK 最低版本 |
---|---|---|---|---|---|
toastEnabled | N | Bool | false | 是否显示 SDK toast 弹窗 | 2.1.1 |
toastDurationSeconds | N | Int | 2 | toast 弹窗时长(秒) | 2.1.1 |
logCollectEnabled | N | Bool | false | 是否收集 SDK 日志 | 2.4.0 |
logFileEnabled | N | Bool | false | 是否写入日志文件到沙盒 | 2.4.0 |
7.分享参数 (OmniSDKShareOptions)
参数名 | 是否必填 | 类型 | 说明 | SDK 最低版本 |
---|---|---|---|---|
platform | Y | 枚举 | 分享平台 "PlatformSystem":系统分享 | 2.5.1 |
text | N | String | 分享内容 | 2.5.1 |
url | N | NSURL | 分享内容 URL | 2.5.1 |
Deprecated APIs
1.初始化
版本要求
SDK 最低版本:v2.0.0
方法原型
public func sdkInitialize(delegate: OmniSDKCallBackDelegate)
参数描述
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
delegate | 必填 | OmniSDKCallBackDelegate | 实现 OmniSDKCallBackDelegate 协议方法,监听 SDK 回调 |
使用场景
- SDK 所有接口都必须在初始化成功后才能调用
- 只需要调用一次
代码示例
- 导入 OmniSDK 头文件,
#import <OmniAPI/OmniAPI-Swift.h>
- 启动时调用初始化方法
[[OmniSDK shared] sdkInitializeWithDelegate:self];
回调监听
// 初始化成功
- (void)onInitNotifierSuccess {
}
// 初始化失败
- (void)onInitNotifierFailureWithResult:(NSString *)result{
}
2.分享
版本要求
SDK 最低版本:v2.0.0
方法原型
func socialShare(_ para: String)
参数描述
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
platform | Y | String "facebook": 分享到 Facebook "line": 分享到 Line | 分享平台 |
shareTitle | N | String | 分享类型 |
shareText | N | String | 分享文本内容 |
shareImageURL | N | String | 分享图片地址 |
shareLinkURL | N | String | 分享链接地址 |
shareQuote | N | String | facebook 引用 |
shareHashTag | N | String | facebook 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 | 取消分享 |