API
提示
OmniSDK 的 API 需要引用命名空间 using Seayoo.OmniSDK
API References
API | Required | Supported Platforms | Description |
---|---|---|---|
Setup | True | 初始化 OmniSDK (所有的 API 都必须调用 Setup 成功后才有效) | |
Login | True | 调用 OmniSDK 登录,例如弹出世游通行证 登录窗口 | |
GetLoginInfo | True | 获取用户登录信息 | |
Logout | True | 调用 OmniSDK 登出,例如在用户点击退出账号时调用 | |
Purchase | True | 执行购买操作 | |
Track | True | 上报游戏内的一些关键行为到 SDK | |
OnKickedOut | True | 处理账号被动退出的情况 | |
Capture | False | 捕获游戏内异常信息到 Sentry | |
Share | False | 分享游戏内信息到第三方平台 | |
OpenAccountCenter | False | 打开账号中心界面 | |
DeleteAccount | False | 注销账号 | |
PreloadAd | False | 预加载广告 | |
ShowAd | False | 显示广告 |
Setup
支持的平台:
警告
Setup
方法是启动 OmniSDK 的关键步骤,它必须在所有其它 OmniSDK API 调用之前被执行- 接入方需要尽早调用
Setup
,建议放到场景中执行较早的MonoBehaviour.Start
方法内
签名
public static void Setup(Action<OmniSDKResult<OmniSDKSetupResult>> callback);
参数
Parameter | Required | Type | Description |
---|---|---|---|
callback | True | Action<OmniSDKResult<OmniSDKSetupResult>> | Setup 完成后的回调方法,用于接收 Setup 的结果 |
OmniSDKSetupResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
appId | String | App ID | |
planId | String | 发布计划 ID | |
channelName | String | 发布渠道名称 | |
sdkVersion | String | 版本号 | |
cpsName | String | cps 分包名称 |
用法
调用 Setup 并通过 callback
接收回调结果 OmniSDKSetupResult
Show Code
public class Demo : MonoBehaviour
{
//...
void Start()
{
OmniSDK.Setup((OmniSDKResult<OmniSDKSetupResult> result) =>
{
if (result.IsSuccess())
{
var setupResult = result.Get();
var appId = setupResult.appId;
var planId = setupResult.planId;
var sdkVersion = setupResult.sdkVersion;
}
else
{
var error = result.GetError();
Debug.LogError(error.DetailMessage);
}
});
}
//...
}
Login
支持的平台:
警告
Login
方法用于执行 OmniSDK 的登录操作,此方法需要在 OmniSDK Setup 成功后调用,通常是在点击 "进入游戏" 按钮时执行- 如果登录失败,建议对相应的错误进行处理,例如给出错误提示,或者重新尝试登录
签名
public static void Login(OmniSDKLoginOptions opts, Action<OmniSDKResult<OmniSDKLoginResult>> callback);
额外提供
Login(Action<...> callback)
,默认使用OmniSDKAuthMethod.NONE
。
参数
Parameters | Required | Type | Description |
---|---|---|---|
opts | False | OmniSDKLoginOptions | 登录参数 |
callback | True | Action<OmniSDKResult<OmniSDKLoginResult>> | 登录完成后的回调方法,用于接收 Login 的结果 |
OmniSDKLoginOptions
Properties | Supported Platforms | Type | Description |
---|---|---|---|
authMethod | OmniSDKAuthMethod (enum) | 登录方式: NONE - 无账号类型,使用 SDK 提供的登录界面及逻辑 GUEST - 游客登录 FACEBOOK - Facebook 登录 GOOGLE - Google 登录 LINE - Line 登录 |
OmniSDKLoginResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
loginInfo | OmniSDKLoginInfo | OmniSDK 相关登录信息 |
用法
调用 Login 并通过 callback
接收回调结果 OmniSDKLoginResult
Show Code
public class Demo : MonoBehaviour
{
//...
void Login()
{
OmniSDK.Login((OmniSDKResult<OmniSDKLoginResult> result) =>
{
if (result.IsSuccess())
{
var loginResult = result.Get();
var userId = loginResult.userId;
var token = loginResult.token;
}
else
{
var error = result.GetError();
Debug.LogError(error.DetailMessage);
}
});
}
//...
}
GetLoginInfo
支持的平台:
警告
GetLoginInfo
方法用于获取 OmniSDK 的登录信息。请确保在登录成功后再调用此方法,否则返回null
。
签名
public static OmniSDKLoginInfo GetLoginInfo();
返回值
返回 OmniSDKLoginInfo 对象。
OmniSDKLoginInfo
Properties | Supported Platforms | Type | Description |
---|---|---|---|
userId | String | 用户 Id | |
authTime | String | Unix timestamp (服务端安全性验证使用) | |
signature | String | 签名信息 (与 OmniSDK Server 通信使用) | |
authMethod | OmniSDKAuthMethod (enum) | 登录方式: NONE - 无账号类型,使用 SDK 提供的登录界面及逻辑 GUEST - 游客登录 FACEBOOK - Facebook 登录 GOOGLE - Google 登录 LINE - Line 登录 | |
state | OmniSDKAccountState (enum) | 账号状态: NORMAL - 正常 DELETING - 处于删除账号冷静期 | |
identityProvider | OmniSDKIdentityProvider (enum) | 关联账号类型: NONE - SDK 提供的身份验证 FACEBOOK - 关联Facebook 登录 GOOGLE - 关联Google 登录 LINE - 关联Line 登录 |
用法
Show Code
public class Demo : MonoBehaviour
{
//...
void GetLoginInfo()
{
OmniSDKLoginInfo loginInfo = OmniSDK.GetLoginInfo();
var userId = loginInfo.userId;
var token = loginInfo.token;
Debug.Log("User ID: " + userId + ", Token: " + token);
}
//...
}
Logout
支持的平台:
信息
Logout
方法用于执行 OmniSDK 的登出操作。此方法通常在用户点击 "登出" 按钮时调用- 如果登出失败,建议对相应的错误进行处理,例如给出错误提示,或者重新尝试登出
签名
public static void Logout(Action<OmniSDKResult<OmniSDKLogoutResult>> callback);
参数
Parameter | Required | Type | Description |
---|---|---|---|
callback | True | Action<OmniSDKResult<OmniSDKLogoutResult>> | 登出完成后的回调方法,用于接收 Logout 的结果 |
OmniSDKLogoutResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
userId | String | 用户 ID |
用法
调用 Logout 并通过 callback
接收回调结果 OmniSDKLogoutResult
Show Code
public class Demo : MonoBehaviour
{
//...
void Logout()
{
OmniSDK.Logout((OmniSDKResult<OmniSDKLogoutResult> result) =>
{
if (result.IsSuccess())
{
// Logout Successful
Debug.Log("Logout Successful");
var userId = result.Get().userId;
}
else
{
var error = result.GetError();
Debug.LogError(error.DetailMessage);
}
});
}
//...
}
Purchase
支持的平台:
信息
Purchase
方法用于执行 OmniSDK 的购买操作。此方法需要在用户选择购买商品后调用- 如果购买失败,建议对相应的错误进行处理,例如给出错误提示
签名
public static void Purchase(OmniSDKPurchaseOptions opts, Action<OmniSDKResult<OmniSDKPurchaseResult>> callback);
参数
Parameters | Required | Type | Description |
---|---|---|---|
opts | True | OmniSDKPurchaseOptions | 购买商品的选项,包含商品信息 |
callback | True | Action<OmniSDKResult<OmniSDKPurchaseResult>> | 购买商品后的回调方法,用于接收 Purchase 的结果 |
OmniSDKPurchaseOptions
Properties | Supported Platforms | Type | Description |
---|---|---|---|
productId | String | 商品 ID:与所有后台商品 ID 保持一致,否则渠道无法拉起支付 | |
productType | OmniSDKProductType (enum) | 商品类型: INAPP - 普通内购; SUBS - 订阅类型 | |
productName | String | 商品名称:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付 | |
productDesc | String | 商品描述:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付 | |
productUnitPrice | Double | 商品单价:单位:元、美元,比如 9.99 美元,0.99 港币等 | |
purchaseQuantity | Int | 实际购买数量: 默认为1 | |
purchaseAmount | Double | 实际支付总额:单位:元、美元 | |
purchaseCallbackUrl | String | 支付回调地址:如果为空字符串,则使用后台配置的回调地址 | |
gameOrderId | String | 游戏订单 ID:不可重复的字符串 | |
gameServerId | String | 服务器 ID:必须为纯数字,且不能超过 2147483647(应用宝渠道要求) | |
gameZoneId | String | 大区 ID | |
gameRoleId | String | 角色 ID | |
gameRoleLevel | String | 角色 等级 | |
gameRoleVipLevel | String | 角色 VIP 等级 | |
gameCurrencyUnit | String | 游戏货币单位(如: 魔石, 钻石......) | |
currency | String | 实际支付的国际标准货币代码:比如 CNY (人民币) / USD (美元) | |
extJson | String | 透传扩展参数:JSON 格式 |
OmniSDKPurchaseResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
orderId | String | OmniSDK 订单号 | |
gameOrderId | String | 游戏订单 ID | |
extJson | String | 透传扩展参数 |
用法
调用 Purchase 并通过 callback
接收回调结果 OmniSDKPurchaseResult
Show Code
public class Demo : MonoBehaviour
{
//...
void Purchase()
{
OmniSDKPurchaseOptions opts = new OmniSDKPurchaseOptions
{
productId = productIdField.text,
productType = OmniSDKProductType.INAPP,
productName = "60钻石",
productDesc = "购买60钻石畅玩游戏",
productUnitPrice = Convert.ToDouble(productPriceField.text),
purchaseAmount = Convert.ToDouble(productPriceField.text),
purchaseQuantity = 1,
purchaseCallbackUrl = "https://a2.xgsdk.dev.seayoo.com/mock/recharge/notify",
gameOrderId = GenOrderId(),
gameRoleId = "123456",
gameRoleName = "Tester",
gameRoleLevel = "1",
gameRoleVipLevel = "1",
gameCurrencyUnit = "魔石",
gameZoneId = "z1",
gameServerId = "s1",
currency = "CNY",
extJson = "{}"
};
OmniSDK.Purchase(opts, (OmniSDKResult<OmniSDKPurchaseResult> result) =>
{
if (result.IsSuccess())
{
// Purchase Successful
Toast.Show("购买完成");
var purchaseResult = result.Get();
}
else
{
var error = result.GetError();
Toast.Show("购买失败");
LogErr(error.DetailMessage);
}
});
}
//...
}
Track
支持的平台:
信息
Track
方法用于上报游戏内的一些关键行为到 OmniSDK- 根据不同的游戏事件,传入不同的事件对象
- 在游戏内发生重要事件时,如进入游戏,创建角色,角色升级,购买成功等,都需要调用此方法进行事件的上报:
- 进入游戏:OmniSDKEnterGameEvent
- 创建角色:OmniSDKCreateRoleEvent
- 角色升级:OmniSDKRoleLevelUpEvent
- 发货成功:OmniSDKPurchaseEvent
- 建议为
OmniSDKRoleInfo
中的所有属性赋值,除非由于游戏机制原因无法获取。这对于后续的数据分析非常有帮助。如果某个字段无法获取,可以不赋值。
签名
public static void Track(OmniSDKTrackEvent evt);
参数
Parameters | Required | Type | Description |
---|---|---|---|
evt | True | OmniSDKTrackEvent 派生类型 | 上报事件 OmniSDKCreateRoleEvent OmniSDKEnterGameEvent OmniSDKRoleLevelUpEvent OmniSDKPurchaseEvent OmniSDKRevenueEvent |
OmniSDKRoleInfo
Properties | Supported Platforms | Type | Description |
---|---|---|---|
userId | String | 用户 ID | |
roleId | String | 角色 ID | |
roleLevel | String | 角色等级 | |
roleName | String | 角色名称 | |
roleVipLevel | String | 角色 VIP 等级 | |
serverId | String | 服务器 ID | |
serverName | String | 服务器名称 |
OmniSDKCreateRoleEvent
提示
- 登录完成后,进入游戏界面时,调用此接口上报角色数据。
- 必接,否则渠道审核不通过
Properties | Required | Supported Platforms | Type | Description |
---|---|---|---|---|
roleInfo | True | OmniSDKRoleInfo | 角色信息 |
OmniSDKEnterGameEvent
提示
- 登录完成后,进入游戏界面时,调用此接口上报角色数据。
- 必接,否则渠道审核不通过
Properties | Required | Supported Platforms | Type | Description |
---|---|---|---|---|
roleInfo | True | OmniSDKRoleInfo | 角色信息 |
OmniSDKRoleLevelUpEvent
提示
- 角色升级,或者其他信息有变化情况下,都可以调用此接口上报角色信息
- 必接,否则渠道审核不通过
Properties | Required | Supported Platforms | Type | Description |
---|---|---|---|---|
roleInfo | True | OmniSDKRoleInfo | 角色信息 |
OmniSDKPurchaseEvent
提示
- 在收到 支付成功结果 之后,上报支付该事件
- 必接
Properties | Supported Platforms | Type | Description |
---|---|---|---|
userId | String | OmniSDK 返回的用户 userId | |
orderId | String | OmniSDK 返回的订单 ID | |
productId | String | 商品 ID | |
productName | String | 商品名称 | |
productDesc | String | 商品描述 | |
productUnitPrice | Double | 商品单价:单位:元、美元,比如 9.99 美元,0.99 港币等 | |
purchaseQuantity | Int | 实际购买数量:不传默认为1 | |
purchaseAmount | Double | 实际支付总额:单位:元、美元 | |
gameOrderId | String | 游戏订单 ID:不可重复的字符串 | |
gameRoleId | String | 角色 ID | |
gameRoleName | String | 角色名称 | |
gameRoleLevel | String | 角色等级 | |
gameRoleVipLevel | String | 角色 VIP 等级 | |
gameServerId | String | 服务器 ID:必须为纯数字,且不能超过 2147483647(应用宝渠道要求) | |
currency | String | 实际支付的国际标准货币代码:比如 CNY (人民币) / USD (美元) | |
extJson | String | 透传扩展参数:JSON 格式;无传空字符串 |
OmniSDKRevenueEvent
提示
- 此方法不同于 支付成功上报信息,具体看运营需求,针对特殊游戏场景。
- 举例:玩家角色升级 50 级,上报付费为10 元的付费事件
Properties | Supported Platforms | Type | Description |
---|---|---|---|
roleInfo | OmniSDKRoleInfo | 玩家角色信息 | |
consumeNum | Int | 上报付费金额,单位元。比如要上报2元的付费事件,consumeNum = 2 |
用法
调用 Track 上报游戏事件
Show Code
public class Demo : MonoBehaviour
{
//...
void CreateRole()
{
OmniSDK.Track(
new OmniSDKCreateRoleEvent
{
roleInfo = new OmniSDKRoleInfo
{
userId = "mockUserID_CreateRole",
roleId = "mockRoleID_CreateRole",
roleLevel = "mockRoleLevel_CreateRole",
roleName = "mockRoleName_CreateRole",
roleVipLevel = "mockRoleVipLevel_CreateRole",
serverId = "mockServerID_CreateRole",
serverName = "mockServerName_CreateRole",
}
}
);
}
//...
}
OnKickedOut
支持的平台:
警告
OnKickedOut
方法用于处理账号被动退出的情况- CP对接方必须处理该回调,当接收到此回调时,应立即退出当前游戏账号
- 此回调的结果通过回调函数返回
签名
public static void OnKickedOut(Action<OmniSDKResult<OmniSDKKickedOutResult>> callback);
参数
Parameter | Required | Type | Description |
---|---|---|---|
callback | True | Action<OmniSDKResult<OmniSDKKickedOutResult>> | 账号被动退出后的回调方法,用于接收 OnKickedOut 的结果 |
OmniSDKKickedOutResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
force | Boolean | 是否强制下线 |
用法
处理账号被动退出的情况
Show Code
public class Demo : MonoBehaviour
{
//...
void Start()
{
OmniSDK.OnKickedOut((OmniSDKResult<OmniSDKKickedOutResult> result) =>
{
if (result.IsSuccess())
{
// Account is kicked out
Debug.Log("Account is kicked out.");
// TODO: Handle account logout here
}
else
{
var error = result.GetError();
Debug.LogError("OnKickedOutError: " + error.DetailMessage);
}
});
}
//...
}
OpenAccountCenter (Optional)
支持的平台:
信息
OpenAccountCenter
方法用于打开 OmniSDK 的账号中心界面- 在账号中心,用户可以进行账号相关的操作,如修改密码,绑定手机,切换账号等
签名
public static void OpenAccountCenter();
用法
调用 OpenAccountCenter 打开账号中心
Show Code
public class Demo : MonoBehaviour
{
//...
void OpenAccountCenter()
{
OmniSDK.OpenAccountCenter();
}
//...
}
DeleteAccount (Optional)
支持的平台:
提示
- 注销账号,用户需要在游戏设置进行注销
- 注销完成后,有注销冷静期,该账号依然可以登录游戏
签名
public static void DeleteAccount(OmniSDKDeleteAccountOptions opts, Action<OmniSDKResult<OmniSDKDeleteAccountResult>> callback);
参数
Parameters | Required | Type | Description |
---|---|---|---|
opts | True | OmniSDKDeleteAccountOptions | 账号注销的选项,例如是否启用自定义UI |
callback | True | Action<OmniSDKResult<OmniSDKDeleteAccountResult>> | 账号注销后的回调方法,用于接收 DeleteAccount 的结果 |
OmniSDKDeleteAccountOptions
Properties | Supported Platforms | Type | Description |
---|---|---|---|
enableCustomUI | Boolean | 是否使用自定义UI |
OmniSDKDeleteAccountResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
userId | String | 用户 ID |
用法
调用 DeleteAccount 注销账号
Show Code
public class Demo : MonoBehaviour
{
//...
void DeleteAccount()
{
OmniSDKDeleteAccountOptions opts = new OmniSDKDeleteAccountOptions
{
enableCustomUI = false
};
OmniSDK.DeleteAccount(opts, (OmniSDKResult<OmniSDKDeleteAccountResult> result) =>
{
if (result.IsSuccess())
{
Debug.LogWarning("DeleteAccountResult: " + JsonConvert.SerializeObject(result.Get()));
}
else
{
var error = result.GetError();
Debug.LogError("DeleteAccountCallback: " + error.DetailMessage);
}
});
}
//...
}
Capture (Optional)
支持的平台:
信息
Capture
方法用于捕获游戏内的异常信息到 Sentry- 在遇到游戏错误或异常时,可以调用此方法将错误信息发送至 Sentry
OmniSDKCaptureOptions
的extraData
用于提供额外的错误上下文信息,这可以帮助您更好地在 Sentry 中分析错误。
签名
public static void Capture(OmniSDKCaptureOptions opts);
参数
Parameter | Required | Type | Description |
---|---|---|---|
opts | True | OmniSDKCaptureOptions | 异常捕获的选项,包含异常信息,级别,以及额外数据 |
OmniSDKCaptureOptions
Properties | Supported Platforms | Type | Description |
---|---|---|---|
payload | String | 详细记录异常或错误的信息,可提供关于发生问题的具体描述 | |
level | OmniSDKCaptureLevel (enum) | 定义异常或错误的严重性级别,可帮助分类和优先处理问题 - DEBUG - INFO - WARNING - ERROR - FATAL | |
extraData | Dictionary<string, string> | 用于提供额外的上下文数据,可以包括任何有助于理解和解决问题的键值对信息 |
用法
调用 Capture 捕获异常信息
Show Code
public class Demo : MonoBehaviour
{
//...
void CaptureError()
{
OmniSDKCaptureOptions opts = new OmniSDKCaptureOptions
{
payload = "Unity test message for sentry capture.",
level = OmniSDKCaptureLevel.ERROR,
extraData = new Dictionary<string, string>
{
{"StackTrace", "Stack trace information."},
{"Other", "Other data."}
}
};
OmniSDK.Capture(opts);
}
//...
}
Share (Optional)
支持的平台:
信息
Share
方法用于分享游戏内的信息到第三方平台- 当用户想要分享游戏内容到第三方平台时,可以调用此方法
- 分享操作的结果通过回调函数返回
签名
public static void Share(OmniSDKShareOptions opts, Action<OmniSDKResult<OmniSDKShareResult>> callback);
参数
Parameters | Required | Type | Description |
---|---|---|---|
opts | True | OmniSDKShareOptions | 分享信息的选项,包含分享平台,标题,描述,链接URL,图片URL |
callback | True | Action<OmniSDKResult<OmniSDKShareResult>> | 分享操作后的回调方法,用于接收 Share 的结果 |
OmniSDKShareOptions
Properties | Supported Platforms | Type | Description |
---|---|---|---|
platform | OmniSDKSharePlatform (enum) | 分享平台类型 - SYSTEM - LINE - VK | |
title | String | 标题 | |
description | String | 分享描述 | |
linkUrl | String | Android - 分享链接地址 iOS - 系统分享图片路径 | |
imageUrl | String | Android - 分享网络图片地址 iOS - Facebook 分享网络图片地址 |
OmniSDKShareResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
用法
调用 Share 分享游戏信息
Show Code
public class Demo : MonoBehaviour
{
//...
void ShareInfo()
{
string localPath = Path.Combine(Application.streamingAssetsPath, "sharePicture.png");
OmniSDKShareOptions opts = new OmniSDKShareOptions
{
platform = OmniSDKSharePlatform.SYSTEM,
title = "Mock Title",
description = "Mock Description",
linkUrl = localPath,
imageUrl = "https://example.com/example.jpg"
};
OmniSDK.Share(opts, (OmniSDKResult<OmniSDKShareResult> result) =>
{
if (result.IsSuccess())
{
var shareResult = result.Get();
}
else
{
var error = result.GetError();
Debug.LogError("ShareCallback: " + error.DetailMessage);
}
});
}
//...
}
PreloadAd (Optional)
支持的平台:
警告
PreloadAd
方法用于预加载广告,它只是提前加载广告,但并不会显示广告,只有调用showAd
接口才会显示广告- 此 API 需要添加 OmniTopOn 模块
- 预加载广告的结果通过回调函数返回,如果预加载失败,建议对相应的错误进行处理
- 建议在游戏加载场景的时候调用此接口
- 此接口需要在登录成功后才能调用
签名
public static void PreloadAd(OmniSDKAdOptions opts, Action<OmniSDKResult<OmniSDKPreloadAdResult>> callback);
参数
Parameters | Required | Type | Description |
---|---|---|---|
opts | True | OmniSDKAdOptions | 广告选项,包含广告位 ID |
callback | True | Action<OmniSDKResult<OmniSDKPreloadAdResult>> | 预加载广告后的回调方法,用于接收 PreloadAd 的结果 |
OmniSDKPreloadAdOptions
Properties | Supported Platforms | Type | Description |
---|---|---|---|
placementId | String | 广告位 ID |
OmniSDKPreloadAdResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
placementId | String | 广告位 ID |
用法
调用 PreloadAd 预加载广告
Show Code
public class Demo : MonoBehaviour
{
//...
void PreloadAd()
{
OmniSDKAdOptions opts = new OmniSDKAdOptions
{
placementId = "test_RV_1",
};
OmniSDK.PreloadAd(opts, (OmniSDKResult<OmniSDKPreloadAdResult> result) =>
{
if (result.IsSuccess())
{
Debug.LogWarning($"广告 {result.Get().placementId} 加载成功);
}
else
{
var error = result.GetError();
Debug.LogError("PreloadAdError: " + error.DetailMessage);
}
});
}
//...
}
ShowAd (Optional)
支持的平台:
警告
ShowAd
方法用于显示广告- 此 API 需要添加 OmniTopOn 模块
- 此 API 并不依赖
preloadAd
接口, 可以直接调用此 API 来显示广告,但为了优化体验,建议先调用preloadAd
接口提前加载广告 - 显示广告的结果通过回调函数返回,如果显示广告失败,建议对相应的错误进行处理
- 此接口需要在登录成功后才能调用
签名
public static void ShowAd(OmniSDKAdOptions opts, Action<OmniSDKResult<OmniSDKShowAdResult>> callback);
参数
Parameters | Required | Type | Description |
---|---|---|---|
opts | True | OmniSDKAdOptions | 广告选项,包含广告位 ID |
callback | True | Action<OmniSDKResult<OmniSDKShowAdResult>> | 显示广告后的回调方法,用于接收 ShowAd 的结果 |
OmniSDKShowAdOptions
Properties | Supported Platforms | Type | Description |
---|---|---|---|
placementId | String | 广告位 ID |
OmniSDKShowAdResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
status | OmniSDKShowAdStatus (enum) | 展示广告的状态: START - 开始显示广告 CLICKED - 广告被点击 CLOSED - 广告被关闭 REWARDED - 广告播放完成,发放奖励 | |
token | String | 第三方广告平台标识 |
用法
调用 ShowAd 显示广告
Show Code
public class Demo : MonoBehaviour
{
//...
void ShowAd()
{
OmniSDKAdOptions opts = new OmniSDKAdOptions
{
placementId = "test_RV_1",
};
OmniSDK.ShowAd(opts, (OmniSDKResult<OmniSDKShowAdResult> result) =>
{
if (result.IsSuccess())
{
Debug.LogWarning($"广告 {result.Get().placementId} 显示成功);
}
else
{
var error = result.GetError();
Debug.LogError("ShowAdError: " + error.DetailMessage);
}
});
}
//...
}
OmniSDKResult
所有带有 callback 回调的 API 参数都使用了 OmniSDKResult<T>
警告
使用 Get()
和 GetError()
方法前,应该先使用 IsSuccess()
方法进行检查,以避免抛出 InvalidOperationException
Show Code
public class Demo : MonoBehaviour
{
//...
void Login()
{
OmniSDK.Login((OmniSDKResult<OmniSDKLoginResult> result) =>
{
if (result.IsSuccess())
{
var loginResult = result.Get();
var userId = loginResult.userId;
var token = loginResult.token;
}
else
{
var error = result.GetError();
Debug.LogError(error.DetailMessage);
}
});
}
//...
}
Error
Code | Enum Value | Description | Supported Platforms |
---|---|---|---|
1000 | UnknownError | 未知错误 | |
1001 | UserCancelled | 用户主动取消了操作 | |
1002 | SystemError | 操作系统层面返回的错误 | |
1003 | NetworkError | 网络错误 | |
1004 | InvalidArgument | 参数不合法 | |
1005 | ServerError | 服务端错误 | |
1006 | ChannelError | 渠道侧 SDK 错误 | |
1007 | PermissionMissing | 权限缺失错误 | |
1008 | FunctionNotSupported | 功能不支持 | |
2000 | SDKInitFailed | SDK初始化失败 | |
2001 | InvalidAppConfig | 应用参数配置错误 | |
2002 | FetchAppConfigFailed | 向服务端请求应用参数失败 | |
2003 | UnInitialized | SDK 未初始化 | |
3000 | LoginRestricted | 账号登录暂时被关闭,请稍后再试 | |
3001 | UnsupportedAuthMethod | 不支持的登录方式 | |
3002 | UnderageUserRestricted | 未成年人禁止登录 | |
3003 | LoginFailed | 账号登录失败 | |
3004 | LogoutFailed | 账号登出失败 | |
4000 | PurchaseRestricted | 应用内购买暂时被关闭,请稍后再试 | |
4001 | CreateOrderFailed | 创建订单失败 | |
4002 | JailbreakRestricted | 越狱设备禁止购买 | |
4003 | FetchProductsFailed | 获取商品信息失败 | |
4004 | ProductNotFound | 待购买的商品不存在 | |
4005 | RegionRestricted | 当前国家或地区无法购买此商品 | |
4006 | VerifyTransactionFailed | 支付订单验证失败 | |
4007 | PurchaseInitFailed | 支付服务初始化设置失败 | |
4008 | PurchaseItemSubscribeError | 商品已订阅无法重复订阅 | |
4009 | PurchaseItemPendingError | 商品 PENDING 状态,用户按Google提示完成付款 | |
4010 | PurchaseUnknownStateError | 商品状态未知异常 | |
4011 | PurchaseItemOwnedError | 购买失败,之前购买的产品未被消耗无法重新购买 | |
5000 | LoadAdvertisementFailed | 广告资源加载失败 | |
5001 | ShowAdvertisementFailed | 广告展示失败 |