跳到主要内容

API

提示

OmniSDK 的 API 需要引用命名空间 using Seayoo.OmniSDK

API References

APIRequiredSupported PlatformsDescription
SetupTrueAndroid iOS Windows初始化 OmniSDK (所有的 API 都必须调用 Setup 成功后才有效)
LoginTrueAndroid iOS Windows调用 OmniSDK 登录,例如弹出世游通行证登录窗口
GetLoginInfoTrueAndroid iOS Windows获取用户登录信息
LogoutTrueAndroid iOS调用 OmniSDK 登出,例如在用户点击退出账号时调用
PurchaseTrueAndroid iOS执行购买操作
TrackTrueAndroid iOS上报游戏内的一些关键行为到 SDK
OnKickedOutTrueAndroid处理账号被动退出的情况
CaptureFalseAndroid iOS捕获游戏内异常信息到 Sentry
ShareFalseAndroid iOS分享游戏内信息到第三方平台
OpenAccountCenterFalseAndroid iOS打开账号中心界面
DeleteAccountFalseAndroid iOS注销账号
PreloadAdFalseAndroid iOS预加载广告
ShowAdFalseAndroid iOS显示广告

Setup

支持的平台:Android iOS Windows

警告
  • Setup 方法是启动 OmniSDK 的关键步骤,它必须在所有其它 OmniSDK API 调用之前被执行
  • 接入方需要尽早调用 Setup,建议放到场景中执行较早的MonoBehaviour.Start 方法内

签名

public static void Setup(Action<OmniSDKResult<OmniSDKSetupResult>> callback);

参数

ParameterRequiredTypeDescription
callbackTrueAction<OmniSDKResult<OmniSDKSetupResult>>Setup 完成后的回调方法,用于接收 Setup 的结果

OmniSDKSetupResult

PropertiesSupported PlatformsTypeDescription
appIdAndroid iOS WindowsStringApp ID
planIdAndroid iOS WindowsString发布计划 ID
channelNameAndroid iOS WindowsString发布渠道名称
sdkVersionAndroid iOS WindowsString版本号
cpsNameAndroidStringcps 分包名称

用法

调用 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

支持的平台:Android iOS Windows

警告
  • Login 方法用于执行 OmniSDK 的登录操作,此方法需要在 OmniSDK Setup 成功后调用,通常是在点击 "进入游戏" 按钮时执行
  • 如果登录失败,建议对相应的错误进行处理,例如给出错误提示,或者重新尝试登录

签名

public static void Login(OmniSDKLoginOptions opts, Action<OmniSDKResult<OmniSDKLoginResult>> callback);

额外提供 Login(Action<...> callback),默认使用 OmniSDKAuthMethod.NONE

参数

ParametersRequiredTypeDescription
optsFalseOmniSDKLoginOptions登录参数
callbackTrueAction<OmniSDKResult<OmniSDKLoginResult>>登录完成后的回调方法,用于接收 Login 的结果

OmniSDKLoginOptions

PropertiesSupported PlatformsTypeDescription
authMethodAndroid iOSOmniSDKAuthMethod (enum)登录方式:
NONE - 无账号类型,使用 SDK 提供的登录界面及逻辑
GUEST - 游客登录
FACEBOOK - Facebook 登录
GOOGLE - Google 登录
LINE - Line 登录

OmniSDKLoginResult

PropertiesSupported PlatformsTypeDescription
loginInfoAndroid iOS WindowsOmniSDKLoginInfoOmniSDK 相关登录信息

用法

调用 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

支持的平台:Android iOS Windows

警告
  • GetLoginInfo 方法用于获取 OmniSDK 的登录信息。请确保在登录成功后再调用此方法,否则返回 null

签名

public static OmniSDKLoginInfo GetLoginInfo();

返回值

返回 OmniSDKLoginInfo 对象。

OmniSDKLoginInfo

PropertiesSupported PlatformsTypeDescription
userIdAndroid iOS WindowsString用户 Id
authTimeAndroid iOS WindowsStringUnix timestamp (服务端安全性验证使用)
signatureAndroid iOS WindowsString签名信息 (与 OmniSDK Server 通信使用)
authMethodAndroid iOSOmniSDKAuthMethod (enum)登录方式:
NONE - 无账号类型,使用 SDK 提供的登录界面及逻辑
GUEST - 游客登录
FACEBOOK - Facebook 登录
GOOGLE - Google 登录
LINE - Line 登录
stateAndroid iOSOmniSDKAccountState (enum)账号状态:
NORMAL - 正常
DELETING - 处于删除账号冷静期
identityProviderAndroid iOSOmniSDKIdentityProvider (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

支持的平台:Android iOS

信息
  • Logout 方法用于执行 OmniSDK 的登出操作。此方法通常在用户点击 "登出" 按钮时调用
  • 如果登出失败,建议对相应的错误进行处理,例如给出错误提示,或者重新尝试登出

签名

public static void Logout(Action<OmniSDKResult<OmniSDKLogoutResult>> callback);

参数

ParameterRequiredTypeDescription
callbackTrueAction<OmniSDKResult<OmniSDKLogoutResult>>登出完成后的回调方法,用于接收 Logout 的结果

OmniSDKLogoutResult

PropertiesSupported PlatformsTypeDescription
userIdAndroid iOSString用户 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

支持的平台:Android iOS

信息
  • Purchase 方法用于执行 OmniSDK 的购买操作。此方法需要在用户选择购买商品后调用
  • 如果购买失败,建议对相应的错误进行处理,例如给出错误提示

签名

public static void Purchase(OmniSDKPurchaseOptions opts, Action<OmniSDKResult<OmniSDKPurchaseResult>> callback);

参数

ParametersRequiredTypeDescription
optsTrueOmniSDKPurchaseOptions购买商品的选项,包含商品信息
callbackTrueAction<OmniSDKResult<OmniSDKPurchaseResult>>购买商品后的回调方法,用于接收 Purchase 的结果

OmniSDKPurchaseOptions

PropertiesSupported PlatformsTypeDescription
productIdAndroid iOSString商品 ID:与所有后台商品 ID 保持一致,否则渠道无法拉起支付
productTypeAndroidOmniSDKProductType (enum)商品类型:
INAPP - 普通内购;
SUBS - 订阅类型
productNameAndroid iOSString商品名称:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付
productDescAndroid iOSString商品描述:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付
productUnitPriceAndroid iOSDouble商品单价:单位:元、美元,比如 9.99 美元,0.99 港币等
purchaseQuantityAndroid iOSInt实际购买数量: 默认为1
purchaseAmountAndroid iOSDouble实际支付总额:单位:元、美元
purchaseCallbackUrlAndroid iOSString支付回调地址:如果为空字符串,则使用后台配置的回调地址
gameOrderIdAndroid iOSString游戏订单 ID:不可重复的字符串
gameServerIdAndroid iOSString服务器 ID:必须为纯数字,且不能超过 2147483647(应用宝渠道要求)
gameZoneIdAndroid iOSString大区 ID
gameRoleIdAndroid iOSString角色 ID
gameRoleLevelAndroid iOSString角色 等级
gameRoleVipLevelAndroid iOSString角色 VIP 等级
gameCurrencyUnitiOSString游戏货币单位(如: 魔石, 钻石......)
currencyAndroidString实际支付的国际标准货币代码:比如 CNY (人民币) / USD (美元)
extJsonAndroid iOSString透传扩展参数:JSON 格式

OmniSDKPurchaseResult

PropertiesSupported PlatformsTypeDescription
orderIdAndroid iOSStringOmniSDK 订单号
gameOrderIdAndroid iOSString游戏订单 ID
extJsonAndroidString透传扩展参数

用法

调用 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

支持的平台:Android iOS

信息
  • Track 方法用于上报游戏内的一些关键行为到 OmniSDK
  • 根据不同的游戏事件,传入不同的事件对象
  • 在游戏内发生重要事件时,如进入游戏,创建角色,角色升级,购买成功等,都需要调用此方法进行事件的上报:
    • 进入游戏:OmniSDKEnterGameEvent
    • 创建角色:OmniSDKCreateRoleEvent
    • 角色升级:OmniSDKRoleLevelUpEvent
    • 发货成功:OmniSDKPurchaseEvent
  • 建议为 OmniSDKRoleInfo 中的所有属性赋值,除非由于游戏机制原因无法获取。这对于后续的数据分析非常有帮助。如果某个字段无法获取,可以不赋值。

签名

public static void Track(OmniSDKTrackEvent evt);

参数

ParametersRequiredTypeDescription
evtTrueOmniSDKTrackEvent 派生类型上报事件
OmniSDKCreateRoleEvent
OmniSDKEnterGameEvent
OmniSDKRoleLevelUpEvent
OmniSDKPurchaseEvent
OmniSDKRevenueEvent

OmniSDKRoleInfo

PropertiesSupported PlatformsTypeDescription
userIdAndroid iOSString用户 ID
roleIdAndroid iOSString角色 ID
roleLevelAndroid iOSString角色等级
roleNameAndroid iOSString角色名称
roleVipLevelAndroid iOSString角色 VIP 等级
serverIdAndroid iOSString服务器 ID
serverNameAndroid iOSString服务器名称

OmniSDKCreateRoleEvent

提示
  • 登录完成后,进入游戏界面时,调用此接口上报角色数据。
  • 必接,否则渠道审核不通过
PropertiesRequiredSupported PlatformsTypeDescription
roleInfoTrueAndroid iOSOmniSDKRoleInfo角色信息

OmniSDKEnterGameEvent

提示
  • 登录完成后,进入游戏界面时,调用此接口上报角色数据。
  • 必接,否则渠道审核不通过
PropertiesRequiredSupported PlatformsTypeDescription
roleInfoTrueAndroid iOSOmniSDKRoleInfo角色信息

OmniSDKRoleLevelUpEvent

提示
  • 角色升级,或者其他信息有变化情况下,都可以调用此接口上报角色信息
  • 必接,否则渠道审核不通过
PropertiesRequiredSupported PlatformsTypeDescription
roleInfoTrueAndroid iOSOmniSDKRoleInfo角色信息

OmniSDKPurchaseEvent

提示
PropertiesSupported PlatformsTypeDescription
userIdAndroid iOSStringOmniSDK 返回的用户 userId
orderIdAndroid iOSStringOmniSDK 返回的订单 ID
productIdAndroid iOSString商品 ID
productNameAndroid iOSString商品名称
productDescAndroid iOSString商品描述
productUnitPriceAndroid iOSDouble商品单价:单位:元、美元,比如 9.99 美元,0.99 港币等
purchaseQuantityAndroid iOSInt实际购买数量:不传默认为1
purchaseAmountAndroid iOSDouble实际支付总额:单位:元、美元
gameOrderIdAndroid iOSString游戏订单 ID:不可重复的字符串
gameRoleIdAndroid iOSString角色 ID
gameRoleNameAndroid iOSString角色名称
gameRoleLevelAndroid iOSString角色等级
gameRoleVipLevelAndroid iOSString角色 VIP 等级
gameServerIdAndroid iOSString服务器 ID:必须为纯数字,且不能超过 2147483647(应用宝渠道要求)
currencyAndroid iOSString实际支付的国际标准货币代码:比如 CNY (人民币) / USD (美元)
extJsonAndroidString透传扩展参数:JSON 格式;无传空字符串

OmniSDKRevenueEvent

提示
  • 此方法不同于 支付成功上报信息,具体看运营需求,针对特殊游戏场景。
  • 举例:玩家角色升级 50 级,上报付费为10 元的付费事件
PropertiesSupported PlatformsTypeDescription
roleInfoAndroidOmniSDKRoleInfo玩家角色信息
consumeNumAndroid iOSInt上报付费金额,单位元。比如要上报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

支持的平台:Android

警告
  • OnKickedOut 方法用于处理账号被动退出的情况
  • CP对接方必须处理该回调,当接收到此回调时,应立即退出当前游戏账号
  • 此回调的结果通过回调函数返回

签名

public static void OnKickedOut(Action<OmniSDKResult<OmniSDKKickedOutResult>> callback);

参数

ParameterRequiredTypeDescription
callbackTrueAction<OmniSDKResult<OmniSDKKickedOutResult>>账号被动退出后的回调方法,用于接收 OnKickedOut 的结果

OmniSDKKickedOutResult

PropertiesSupported PlatformsTypeDescription
forceAndroidBoolean是否强制下线

用法

处理账号被动退出的情况

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)

支持的平台:Android iOS

信息
  • OpenAccountCenter 方法用于打开 OmniSDK 的账号中心界面
  • 在账号中心,用户可以进行账号相关的操作,如修改密码,绑定手机,切换账号等

签名

public static void OpenAccountCenter();

用法

调用 OpenAccountCenter 打开账号中心

Show Code
public class Demo : MonoBehaviour
{
//...
void OpenAccountCenter()
{
OmniSDK.OpenAccountCenter();
}
//...
}

DeleteAccount (Optional)

支持的平台:Android iOS

提示
  • 注销账号,用户需要在游戏设置进行注销
  • 注销完成后,有注销冷静期,该账号依然可以登录游戏

签名

public static void DeleteAccount(OmniSDKDeleteAccountOptions opts, Action<OmniSDKResult<OmniSDKDeleteAccountResult>> callback);

参数

ParametersRequiredTypeDescription
optsTrueOmniSDKDeleteAccountOptions账号注销的选项,例如是否启用自定义UI
callbackTrueAction<OmniSDKResult<OmniSDKDeleteAccountResult>>账号注销后的回调方法,用于接收 DeleteAccount 的结果

OmniSDKDeleteAccountOptions

PropertiesSupported PlatformsTypeDescription
enableCustomUIAndroidBoolean是否使用自定义UI

OmniSDKDeleteAccountResult

PropertiesSupported PlatformsTypeDescription
userIdAndroid iOSString用户 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)

支持的平台:Android iOS

信息
  • Capture 方法用于捕获游戏内的异常信息到 Sentry
  • 在遇到游戏错误或异常时,可以调用此方法将错误信息发送至 Sentry
  • OmniSDKCaptureOptionsextraData 用于提供额外的错误上下文信息,这可以帮助您更好地在 Sentry 中分析错误。

签名

public static void Capture(OmniSDKCaptureOptions opts);

参数

ParameterRequiredTypeDescription
optsTrueOmniSDKCaptureOptions异常捕获的选项,包含异常信息,级别,以及额外数据

OmniSDKCaptureOptions

PropertiesSupported PlatformsTypeDescription
payloadAndroid iOSString详细记录异常或错误的信息,可提供关于发生问题的具体描述
levelAndroid iOSOmniSDKCaptureLevel (enum)定义异常或错误的严重性级别,可帮助分类和优先处理问题
- DEBUG
- INFO
- WARNING
- ERROR
- FATAL
extraDataAndroid iOSDictionary<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)

支持的平台:Android iOS

信息
  • Share 方法用于分享游戏内的信息到第三方平台
  • 当用户想要分享游戏内容到第三方平台时,可以调用此方法
  • 分享操作的结果通过回调函数返回

签名

public static void Share(OmniSDKShareOptions opts, Action<OmniSDKResult<OmniSDKShareResult>> callback);

参数

ParametersRequiredTypeDescription
optsTrueOmniSDKShareOptions分享信息的选项,包含分享平台,标题,描述,链接URL,图片URL
callbackTrueAction<OmniSDKResult<OmniSDKShareResult>>分享操作后的回调方法,用于接收 Share 的结果

OmniSDKShareOptions

PropertiesSupported PlatformsTypeDescription
platformAndroid iOSOmniSDKSharePlatform (enum)分享平台类型
- SYSTEM
- FACEBOOK
- LINE
- VK
titleAndroid iOSString标题
descriptionAndroidString分享描述
linkUrlAndroid iOSStringAndroid - 分享链接地址
iOS - 系统分享图片路径
imageUrlAndroid iOSStringAndroid - 分享网络图片地址
iOS - Facebook 分享网络图片地址

OmniSDKShareResult

PropertiesSupported PlatformsTypeDescription

用法

调用 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)

支持的平台:Android iOS

警告
  • PreloadAd 方法用于预加载广告,它只是提前加载广告,但并不会显示广告,只有调用 showAd 接口才会显示广告
  • 此 API 需要添加 OmniTopOn 模块
  • 预加载广告的结果通过回调函数返回,如果预加载失败,建议对相应的错误进行处理
  • 建议在游戏加载场景的时候调用此接口
  • 此接口需要在登录成功后才能调用

签名

public static void PreloadAd(OmniSDKAdOptions opts, Action<OmniSDKResult<OmniSDKPreloadAdResult>> callback);

参数

ParametersRequiredTypeDescription
optsTrueOmniSDKAdOptions广告选项,包含广告位 ID
callbackTrueAction<OmniSDKResult<OmniSDKPreloadAdResult>>预加载广告后的回调方法,用于接收 PreloadAd 的结果

OmniSDKPreloadAdOptions

PropertiesSupported PlatformsTypeDescription
placementIdAndroid iOSString广告位 ID

OmniSDKPreloadAdResult

PropertiesSupported PlatformsTypeDescription
placementIdAndroid iOSString广告位 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)

支持的平台:Android iOS

警告
  • ShowAd 方法用于显示广告
  • 此 API 需要添加 OmniTopOn 模块
  • 此 API 并不依赖 preloadAd 接口, 可以直接调用此 API 来显示广告,但为了优化体验,建议先调用 preloadAd 接口提前加载广告
  • 显示广告的结果通过回调函数返回,如果显示广告失败,建议对相应的错误进行处理
  • 此接口需要在登录成功后才能调用

签名

public static void ShowAd(OmniSDKAdOptions opts, Action<OmniSDKResult<OmniSDKShowAdResult>> callback);

参数

ParametersRequiredTypeDescription
optsTrueOmniSDKAdOptions广告选项,包含广告位 ID
callbackTrueAction<OmniSDKResult<OmniSDKShowAdResult>>显示广告后的回调方法,用于接收 ShowAd 的结果

OmniSDKShowAdOptions

PropertiesSupported PlatformsTypeDescription
placementIdAndroid iOSString广告位 ID

OmniSDKShowAdResult

PropertiesSupported PlatformsTypeDescription
statusAndroid iOSOmniSDKShowAdStatus (enum)展示广告的状态:
START - 开始显示广告
CLICKED - 广告被点击
CLOSED - 广告被关闭
REWARDED - 广告播放完成,发放奖励
tokenAndroid iOSString第三方广告平台标识

用法

调用 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

CodeEnum ValueDescriptionSupported Platforms
1000UnknownError未知错误Android iOS Windows
1001UserCancelled用户主动取消了操作Android iOS Windows
1002SystemError操作系统层面返回的错误Android iOS Windows
1003NetworkError网络错误Android iOS Windows
1004InvalidArgument参数不合法Android iOS Windows
1005ServerError服务端错误Android iOS
1006ChannelError渠道侧 SDK 错误Android iOS
1007PermissionMissing权限缺失错误Android
1008FunctionNotSupported功能不支持Android
2000SDKInitFailedSDK初始化失败Android iOS
2001InvalidAppConfig应用参数配置错误iOS Windows
2002FetchAppConfigFailed向服务端请求应用参数失败iOS Windows
2003UnInitializedSDK 未初始化iOS
3000LoginRestricted账号登录暂时被关闭,请稍后再试iOS
3001UnsupportedAuthMethod不支持的登录方式iOS
3002UnderageUserRestricted未成年人禁止登录iOS
3003LoginFailed账号登录失败Android
3004LogoutFailed账号登出失败Android
4000PurchaseRestricted应用内购买暂时被关闭,请稍后再试iOS
4001CreateOrderFailed创建订单失败Android iOS
4002JailbreakRestricted越狱设备禁止购买iOS
4003FetchProductsFailed获取商品信息失败iOS
4004ProductNotFound待购买的商品不存在iOS
4005RegionRestricted当前国家或地区无法购买此商品iOS
4006VerifyTransactionFailed支付订单验证失败iOS
4007PurchaseInitFailed支付服务初始化设置失败Android
4008PurchaseItemSubscribeError商品已订阅无法重复订阅Android
4009PurchaseItemPendingError商品 PENDING 状态,用户按Google提示完成付款Android
4010PurchaseUnknownStateError商品状态未知异常Android
4011PurchaseItemOwnedError购买失败,之前购买的产品未被消耗无法重新购买Android
5000LoadAdvertisementFailed广告资源加载失败Android iOS
5001ShowAdvertisementFailed广告展示失败Android iOS