平台Web SDK 接入文档

1. 概述

该指南旨在详细阐述如何在游戏中融入并利用我们的 SDK。我们的 SDK 搭载了一系列功能,包含初始化、登录、角色信息报告(包括注册、登录和注销)、公告、客服接入、日志上报、礼包码兑换、问卷调查、协议查阅以及支付等。

2. 安装SDK

在开始接入过程之前,必须首先确认游戏的访问地址,并将其提供给我们的技术支持同学。我们会将访问地址先在AF后台进行配置。请注意,一旦地址配置完成,将无法进行更改。

我们将提供’platform-sdk-config’目录 (请联系技术支持以获取)。目录包含所有平台产品的配置文件。需要将目录放置在与index.html文件相同的目录层级中。

以游戏访问地址为 https://xxx.com/game1 为例:

目录的结构应如下所示:

  1. - Build # 游戏打包文件
  2. - TemplateData # 游戏打包文件
  3. - index.html # 游戏打包文件
  4. - platform-sdk-config # 平台提供目录,包含SDK的配置文件
  5. - config.json
  6. - midbase_statlog.json
  7. - static # 游戏可配置此目录图片资源
  8. - default_user_img.png # 用户头像图片
  9. - loading.png # 加载图
  10. - logo.png # 游戏logo图
  11. - top_arrow.png # 菜单键下拉箭头
  12. - style.css # 游戏样式

根据游戏实现的具体需求,可以选择对应的接入语言。目前我们支持 Unity 和 Typescript 。

2.1 Unity版SDK

  • 在游戏的index.html head中引入JS脚本

    1. <script type="text/javascript" src="https://cdn-global-sdk.aceux.net/platform-sdk/global-web/2.3.js"></script>
  • 引入平台提供的 PlatformSDK.Bridge.2.3.unitypackage 包 (可以在SDK官方网站下载)

  • 更新SDK版本: 导入平台提供新版本的untiypackage (PlatformSDK.Bridge.2.4.unitypackage)、调整script中的版本号()

2.2 Typescript版SDK

  • 设置平台私仓地址
  1. npm config set @platform-sdk:registry http://nexus.acegames.cn/repository/npm-hosted/
  • 安装SDK
  1. npm install @platform-sdk/web -S

3.接口文档

接口设计原则:

  1. 我们的SDK接口被细致地设计为同步接口(如:login, getServiceId)和异步接口(如:initialize, pay)。

    • 同步接口的目标是确保稳定性,避免出现异常情况。所有请求的结果将被直接返回,确保流程的顺畅性。

    • 异步接口则是为了处理异步操作和可能出现的异常情况。请求的结果通过Task(在Unity环境中)或Promise(在Typescript环境中)返回,以实现异步处理。我们采用了统一的异常处理类,SDKException(在Unity环境中)和SdkError(在Typescript环境中),以保证异常的统一性和处理的效率。
      错误码表

  2. 在使用SDK的过程中,为了保证流程的完整性,您需要在初始化接口initialize中注册SDK的生命周期事件。这些事件包括登录成功、账号切换和账号注销等重要操作。
  3. 对于接口参数的属性,如果文档已明确标明为必填项,那么在未提供这些参数的情况下,接口将抛出异常,错误码为 00000000。此时,游戏方需要根据提示进行相应的调整。请注意,为了保证游戏的正常运行,这种情况需要在游戏上线前解决。另外,我们在接口的功能说明中也提供了其他可能出现的异常情况。

3.1 初始化(必接)

3.1.1 功能说明

在激活SDK的各项功能之前,首先需要进行初始化。可以在应用程序启动时调用 initialize 方法:

此方法会使用platform-sdk目录下的配置文件来启动SDK。

初始化过程中,SDK的Header页面将在游戏页面的基础上进行渲染。Header提供 显示当前登录账号、账号切换、客服

为了保证SDK的正常运行,您需要在初始化时注册SDK的生命周期事件,包括登录成功、账号切换和账号注销操作。

3.1.2 接口定义

Unity
  1. /**
  2. * 初始化SDK
  3. */
  4. public static Task Initialize(InitializeOptions options)
Typescript
  1. /**
  2. * 初始化SDK
  3. */
  4. function initialize(options: InitializeOptions): Promise<void>

3.1.3 参数说明

  1. InitializeOptions
参数名 说明 必填 类型(Unity/Typescript)
version 游戏版本 string
resVersion 游戏资源版本 string
language 语言 Language
onLogin 登录回调 Action<CallbackData<User>> / (data: CallbackData<User>) => void
onSwitchAccount 切换账号回调 Action<CallbackData<User>> / (data: CallbackData<User>) => void
onLogout 注销 Action / () => void
onFullScreenChange 全屏状态变化, 返回当前全屏状态 Action<bool> / (fullScreen: boolean) => void
  1. Language

枚举类型

  • Language.en_US

  • Language.zh_CN

  • Language.zh_TW

  • Language.ko_KR

  1. CallbackData<D>

回调数据类型

参数名 说明 必填 类型(Unity/Typescript)
data 回调数据 R
success 回调成功状态 bool/boolean
errorCode 错误码 string
  1. User

用户信息

参数名 说明 必填 类型
userId 用户ID string
returnJson 渠道授权数据返回JSON对象 string
userName 平台用户名 string
token Token string
userServiceCode 服务端上报透传, 在角色登录前使用 string
loginType 当前登录方式; speedy:快登用户 common:用户名密码用户 phone:手机号用户 email: 邮箱用户 thirdHidden:三方授权用户 accessToken:token登录 string

3.1.4 返回说明

Task / Promise<void>

初始化成功/失败回调

3.1.5 错误码说明

错误码 描述
00000000 请在index同级目录下未找到/platform-sdk-config/config.json文件

onLoginonSwitchAccounterrorCode 返回说明

错误码 描述
00020000 登录/切换账号 失败
00020001 登录/切换账号 取消登录

错误码表

3.1.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. try
  3. {
  4. await SDK.Initialize(new InitializeOptions()
  5. {
  6. version = "2.3.0",
  7. resVersion = "1.0.0",
  8. language = Language.en_US,
  9. onLogin = (data) =>
  10. {
  11. Debug.Log("Login " + data);
  12. },
  13. onLogout = () =>
  14. {
  15. Debug.Log("Logout Success");
  16. },
  17. onSwitchAccount = (data) =>
  18. {
  19. Debug.Log("SwitchAccount " + data);
  20. },
  21. onFullScreenChange = (fullScreen) =>
  22. {
  23. Debug.Log("onFullScreenChange " + fullScreen);
  24. }
  25. });
  26. Debug.Log("Initialized Success");
  27. }
  28. catch (SDKException e)
  29. {
  30. Debug.Log("Initialized Error: code: " + e.code + ", message: " + e.message);
  31. }
Typescript
  1. import sdk, {Language, SdkError} from "@platform-sdk/global-web";
  2. try {
  3. await sdk.initialize({
  4. version: '2.3.0',
  5. resVersion: '1.0.0',
  6. language: Language.en_US,
  7. onLogin: u => {
  8. console.log('Login Success', u);
  9. },
  10. onSwitchAccount: () => {
  11. console.log('SwitchAccount Success');
  12. },
  13. onLogout: () => {
  14. console.log('Logout Success');
  15. },
  16. // 监听全屏改变
  17. onFullScreenChange: (fullScreen) => {
  18. console.log('onFullScreenChange Success ' + fullScreen);
  19. }
  20. });
  21. console.log('Initialized Success');
  22. } catch (e) {
  23. if (e instanceof SdkError) {
  24. console.log('Initialized Error: code: ' + e.code + ', message: ' + e.message);
  25. }
  26. }

3.2 登录(必接)

3.2.1 功能说明

使用 login 方法可以启动登录流程:

一旦登录成功,SDK会执行在初始化过程中注册的登录成功回调。

3.2.2 接口定义

Unity
  1. /**
  2. * 登录
  3. */
  4. public static void Login()
Typescript
  1. /**
  2. * 登录
  3. */
  4. function login(): void

3.2.3 参数说明

3.2.4 返回说明

3.2.5 错误码说明

3.2.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.Login();
Typescript
  1. import sdk from "@platform-sdk/global-web";
  2. sdk.login();

3.3 角色信息上报(必接)

3.3.1 功能说明

使用 reportRoleInfo 方法上报角色信息, 上报类型为logout时其它参数才可为空, 其它上报类型所有参数都不为空

3.3.2 接口定义

Unity
  1. /**
  2. * 角色信息上报
  3. */
  4. public static void ReportRoleInfo(ReportRoleInfoOptions options)
Typescript
  1. /**
  2. * 角色信息上报
  3. */
  4. function reportRoleInfo(options: ReportRoleInfoOptions): void

3.3.3 参数说明

  1. ReportRoleInfoOptions
参数名 说明 必填 类型(Unity/Typescript)
sendType 上报类型: 角色注册、角色登录、角色信息修改、角色注销 ReportRoleInfoSendType
serverId 游戏服ID string
serverName 游戏服名称 string
roleId 角色ID string
roleName 角色名称 string
roleLevel 角色等级 string
vipLevel VIP等级 string
roleCreateTime 角色创建时间 double / number

3.3.4 返回说明

3.3.5 错误码说明

3.3.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.ReportRoleInfo(new ReportRoleInfoOptions()
  3. {
  4. sendType = ReportRoleInfoSendType.login,
  5. serverId = "1",
  6. serverName = "1",
  7. roleId = "1",
  8. roleName = "1",
  9. roleLevel = "1",
  10. vipLevel = "1",
  11. roleCreateTime = 1701403244126
  12. });
Typescript
  1. import sdk, {ReportRoleInfoSendType} from "@platform-sdk/global-web";
  2. sdk.reportRoleInfo({
  3. sendType: ReportRoleInfoSendType.login,
  4. serverId: "1",
  5. serverName: "1",
  6. roleId: "1",
  7. roleName: "1",
  8. roleLevel: "1",
  9. vipLevel: "1",
  10. roleCreateTime: 1701403244126
  11. });

3.4 支付(必接)

3.4.1 功能说明

使用 pay 方法拉起SDK支付

3.4.2 接口定义

Unity
  1. /**
  2. * 支付
  3. */
  4. public static Task<Order> Pay(PayOptions options)
Typescript
  1. /**
  2. * 支付
  3. */
  4. function pay(options: PayOptions): Promise<Order>

3.4.3 参数说明

  1. PayOptions
参数名 说明 必填 类型(Unity/Typescript)
productId 商品ID string
productName 商品名称 string
productDesc 商品描述 string
price 价格 string
quantity 数量 int / number
vipLevel VIP等级 string
roleLevel 角色等级 string
currencyType 货币类型 string
virtualCoinUnit 虚拟货币名称,比如 钻石,金币,宝石 等 string
extension 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器 string
gamedDeliverUrl 游戏发放道具服务器地址,用户支付成功后计费中心会回调此地址告知游戏进行道具发放。 可以配置到SDK后台。 string

currencyType取值

货币类型值 货币名称 货币单位
1 人民币
2 美元 美分
3 日元
4 港币
5 英镑 便士
6 新加坡币
7 越南盾
8 台币
9 韩元
10 泰铢 萨当

3.4.4 返回说明

回调成功: 支付成功

  1. Order
参数名 说明 类型
orderId 订单ID string
productId 商品ID string

回调失败: 支付失败/用户取消

3.4.5 错误码说明

错误码 描述
00030001 取消支付
00030000 支付失败

错误码表

3.4.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. try
  3. {
  4. var order = await SDK.Pay(new PayOptions()
  5. {
  6. productId = "1",
  7. productName = "1",
  8. productDesc = "1",
  9. price = "1",
  10. quantity = 1,
  11. roleLevel = "1",
  12. vipLevel = "1"
  13. });
  14. Debug.Log("Pay Success" + order.orderId);
  15. }
  16. catch (SDKException e)
  17. {
  18. Debug.Log("Pay Error: ", e.code);
  19. }
Typescript
  1. import sdk, {SdkError} from "@platform-sdk/global-web";
  2. try {
  3. await sdk.pay({
  4. productId: '1',
  5. productName: '1',
  6. productDesc: '1',
  7. price: '1',
  8. quantity: 1,
  9. roleLevel: '1',
  10. vipLevel: '1'
  11. });
  12. console.log("Pay Success");
  13. } catch (e) {
  14. if (e instanceof SdkError) {
  15. console.log("Pay Error: ", e.code);
  16. }
  17. }

3.5 获取ServiceId(必接)

3.5.1 功能说明

使用 getServiceId 方法获取serviceId, 调用前需要上报角色登录

3.5.2 接口定义

Unity
  1. /**
  2. * 获取ServiceId
  3. */
  4. public static string GetServiceId()
Typescript
  1. /**
  2. * 获取ServiceId
  3. */
  4. function getServiceId(): string

3.5.3 参数说明

3.5.4 返回说明

返回 serviceId 产品平台ID

3.5.5 错误码说明

3.5.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. var serviceId = SDK.GetServiceId();
  3. Debug.Log("GetServiceId Success: " + serviceId);
Typescript
  1. import sdk from "@platform-sdk/global-web";
  2. const serviceId = sdk.getServiceId();
  3. console.log("GetServiceId Success: " + serviceId);

3.6 第三方广告平台打点(必接)

3.6.1 功能说明

使用 analyticsLog 方法来进行三方广告平台打点, 目前支持AppsFlyer

3.6.2 接口定义

Unity
  1. /**
  2. * 第三方广告平台打点
  3. */
  4. public static void AnalyticsLog(AnalyticsLogOptions options)
Typescript
  1. /**
  2. * 第三方广告平台打点
  3. */
  4. function analyticsLog(options: AnalyticsLogOptions): void

3.6.3 参数说明

  1. AnalyticsLogOptions
参数名 说明 必填 类型
eventKey 事件Key string
eventParams 事件参数 Dictionary<string, string> / Record<string, string>

3.6.4 返回说明

3.6.5 错误码说明

3.6.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.AnalyticsLog(new AnalyticsLogOptions()
  3. {
  4. eventKey = "open"
  5. });
Typescript
  1. import sdk from "@platform-sdk/global-web";
  2. sdk.analyticsLog({
  3. eventKey: "open"
  4. });

3.7 日志上报(必接)

3.7.1 功能说明

使用 reportLog 方法进行日志上报

logId和logKey对应表

3.7.2 接口定义

Unity
  1. /**
  2. * 日志上报
  3. */
  4. public static void ReportLog(ReportLogOptions options)
Typescript
  1. /**
  2. * 日志上报
  3. */
  4. function reportLog(options: ReportLogOptions): Promise<void>

3.7.3 参数说明

  1. ReportLogOptions
参数名 说明 必填 类型
logId 事件ID string
logKey 事件Key string
map 事件参数 Dictionary<string, string>/Record<string, string>

3.7.4 返回说明

成功回调表示日志上报成功

3.7.5 错误码说明

3.7.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. Dictionary<string, string> map = new Dictionary<string, string>();
  3. map.Add("actId", "10000");
  4. map.Add("actName", "开始新手引导");
  5. map.Add("detail", "回合开始");
  6. map.Add("classifiedId", "00000000");
  7. map.Add("classifiedName", "分类1");
  8. map.Add("roleLevel", "1");
  9. map.Add("roleVipLevel", "1");
  10. map.Add("taskId", "1");
  11. map.Add("taskName", "1");
  12. SDK.ReportLog(new ReportLogOptions()
  13. {
  14. logId = "1001",
  15. logKey = "role-task",
  16. map = map
  17. });
Typescript
  1. import sdk from "@platform-sdk/global-web";
  2. sdk.reportLog({
  3. logId: '1001',
  4. logKey: 'role-task',
  5. map: {
  6. actId: '123',
  7. actName: '123name',
  8. classifiedId: '1',
  9. classifiedName: '1',
  10. detail: 'message'
  11. }
  12. });

3.8 分享(选接)

3.8.1 功能说明

使用 share 方法来进行分享, 目前支持Facebook分享

3.8.2 接口定义

Unity
  1. /**
  2. * 分享
  3. */
  4. public static void Share(ShareOptions options)
Typescript
  1. /**
  2. * 分享
  3. */
  4. function share(options: ShareOptions): void

3.8.3 参数说明

  1. ShareOptions
参数名 说明 必填 类型
type 分享类型 ShareType
url 分享链接 不传默认为当前页面地址 string
  1. ShareType

枚举类型

  • ShareType.Facebook

3.8.4 返回说明

3.8.5 错误码说明

3.8.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.Share(new ShareOptions()
  3. {
  4. type = ShareType.Facebook
  5. });
Typescript
  1. import sdk, {ShareType} from "@platform-sdk/global-web";
  2. sdk.share({
  3. type: ShareType.Facebook
  4. });

3.9 打开公告(选接)

3.9.1 功能说明

使用 openNotice 方法打开公告

3.9.2 接口定义

Unity
  1. /**
  2. * 打开公告
  3. */
  4. public static Task OpenNotice(OpenNoticeOptions options)
Typescript
  1. /**
  2. * 打开公告
  3. */
  4. function openNotice(options: OpenNoticeOptions): Promise<void>

3.9.3 参数说明

  1. OpenNoticeOptions
参数名 说明 必填 类型(Unity/Typescript)
onClose 上报类型: 角色注册、角色登录、角色信息修改、角色注销 Action / () => void

3.9.4 返回说明

异步回调表示成功打开公告

3.9.5 错误码说明

错误码 说明
00090000 未配置公告

3.9.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. try
  3. {
  4. await SDK.OpenNotice(new OpenNoticeOptions()
  5. {
  6. onClose = () =>
  7. {
  8. Debug.Log("Close Notice");
  9. }
  10. });
  11. Debug.Log("Open Notice Success");
  12. }
  13. catch (SDKException e)
  14. {
  15. Debug.Log("Open Notice Error: " + e.code);
  16. }
Typescript
  1. import sdk, {SdkError} from "@platform-sdk/global-web";
  2. try {
  3. await sdk.openNotice({
  4. onClose: () => {
  5. console.log("Close Notice");
  6. }
  7. })
  8. console.log("Open Notice Success");
  9. } catch(e) {
  10. if (e instanceof SdkError) {
  11. console.log("Open Notice Error: " + e.code);
  12. }
  13. }

3.10 打开协议(选接)

3.10.1 功能说明

使用 openProtocol 方法来打开协议页面

3.10.2 接口定义

Unity
  1. /**
  2. * 打开公告
  3. */
  4. public static void OpenProtocol(OpenProtocolOptions options)
Typescript
  1. /**
  2. * 打开公告
  3. */
  4. function openProtocol(options: OpenProtocolOptions): void

3.10.3 参数说明

  1. OpenProtocolOptions
参数名 说明 必填 类型(Unity/Typescript)
onAgree 点击了同意(可做为协议关闭回调) Action / () => void
onReject 点击了拒绝 Action / () => void

3.10.4 错误码说明

3.10.5 错误码说明

3.10.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.OpenProtocol(new OpenProtocolOptions()
  3. {
  4. onAgree = () =>
  5. {
  6. Debug.Log("点击了同意");
  7. },
  8. onReject = () =>
  9. {
  10. Debug.Log("点击了拒绝");
  11. }
  12. });
Typescript
  1. import sdk from "@platform-sdk/global-web";
  2. sdk.openProtocol({
  3. onAgree: () => {
  4. console.log("点击了同意");
  5. },
  6. onReject: () => {
  7. console.log("点击了拒绝");
  8. }
  9. });

3.11 打开问卷(选接)

3.11.1 功能说明

使用 openQuestionnaire 方法来打开问卷, 会在新的窗口用打开问卷页面

3.11.2 接口定义

Unity
  1. /**
  2. * 打开问卷
  3. */
  4. public static Task OpenQuestionnaire(OpenQuestionnaireOptions options)
Typescript
  1. /**
  2. * 打开问卷
  3. */
  4. function openQuestionnaire(options: OpenQuestionnaireOptions): Promise<void>

3.11.3 参数说明

  1. OpenQuestionnaireOptions
参数名 说明 必填 类型(Unity/Typescript)
questionId 平台问卷ID string
customParams 自定义参数 Dictionary<string, string> / Record<string, string>

3.11.3 返回说明

回调成功: 成功打开问卷

回调失败: 问卷打开失败

3.11.4 错误码说明

错误码表

3.11.5 示例

Unity
  1. using PlatformSDK.Bridge;
  2. var customParams = new Dictionary<string, string>
  3. {
  4. { "roleId", "1" }
  5. };
  6. try
  7. {
  8. await SDK.OpenQuestionnaire(new OpenQuestionnaireOptions()
  9. {
  10. questionId = "1",
  11. customParams = customParams
  12. });
  13. Debug.Log("Open Questionnaire Success");
  14. }
  15. catch (SDKException e)
  16. {
  17. Debug.Log("Open Questionnaire Error: " + e.code);
  18. }
Typescript
  1. import sdk, {SdkError} from "@platform-sdk/global-web";
  2. try {
  3. await sdk.openQuestionnaire({
  4. questionId: "1",
  5. customParams: {
  6. roleId: "1"
  7. }
  8. });
  9. console.log("Open Questionnaire Success");
  10. } catch (e) {
  11. if (e instanceof SdkError) {
  12. console.log("Open Questionnaire Fail: " + e.code);
  13. }
  14. }

3.12 礼包码兑换(选接)

3.12.1 功能说明

使用 giftCodeExchange 方法进行礼包码兑换

3.12.2 接口定义

Unity
  1. /**
  2. * 礼包码兑换
  3. */
  4. public static Task GiftCodeExchange(GiftCodeExchangeOptions options)
Typescript
  1. /**
  2. * 礼包码兑换
  3. */
  4. function giftCodeExchange(options: GiftCodeExchangeOptions): Promise<void>

3.12.3 参数说明

GiftCodeExchangeOptions

参数名 说明 必填 类型
code 礼包码 string

3.12.4 返回说明

回调表示兑换成功

3.12.5 错误码说明

错误码表

3.12.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. try
  3. {
  4. await SDK.GiftCodeExchange(new GiftCodeExchangeOptions()
  5. {
  6. code = 'xxxx'
  7. });
  8. Debug.Log("GiftCodeExchange Success");
  9. }
  10. catch (SDKException e)
  11. {
  12. Debug.Log("GiftCodeExchange Error", e.code);
  13. }
Typescript
  1. import sdk, {SdkError} from "@platform-sdk/global-web";
  2. try {
  3. await sdk.giftCodeExchange({
  4. code: 'xxxx'
  5. });
  6. console.log("GiftCodeExchange Success");
  7. } catch (e) {
  8. if (e instanceof SdkError) {
  9. console.log("GiftCodeExchange Error", e.code);
  10. }
  11. }

3.13 切换语言(选接)

3.13.1 功能说明

使用 switchLanguage 方法切换SDK语言

3.13.2 接口定义

Unity
  1. /**
  2. * 切换语言
  3. */
  4. public static Task SwitchLanguage(Language language)
Typescript
  1. /**
  2. * 切换语言
  3. */
  4. function switchLanguage(language: Language): Promise<void>

3.13.3 参数说明

  1. Language

枚举类型

  • Language.en_US
  • Language.zh_CN
  • Language.zh_TW
  • Language.ko_KR

3.13.4 返回说明

设置成功, 如不需要可以不等待回调

3.13.5 错误码说明

3.13.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.SwitchLanguage(Language.en_US);
Typescript
  1. import sdk, {Language} from "@platform-sdk/global-web";
  2. sdk.switchLanguage(Language.en_US);

3.14 打开客服(选接)

3.14.1 功能说明

使用 openCustomerService 方法拉起SDK客服界面

3.14.2 接口定义

Unity
  1. /**
  2. * 打开客服
  3. */
  4. public static void OpenCustomerService()
Typescript
  1. /**
  2. * 打开客服
  3. */
  4. public openCustomerService(): void

3.14.3 参数说明

3.14.4 返回说明

3.14.5 错误码说明

3.14.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.OpenCustomerService();
Typescript
  1. import sdk from "@platform-sdk/global-web";
  2. sdk.openCustomerService();

3.15 数据存储接口(选接)

3.15.1 功能说明

使用 localStorageSave 方法来保存数据到本地.

使用localStorageGet方法来获取保存在本地的数据

3.15.2 接口定义

Unity
  1. /**
  2. * 保存数据
  3. */
  4. public static void LocalStorageSet(LocalStorageSetOptions options);
  5. /**
  6. * 获取数据
  7. */
  8. public static T? LocalStorageGet<T>(LocalStorageGetOptions options);
Typescript
  1. /**
  2. * 保存数据
  3. */
  4. public localStorageSet(options: LocalStorageSetOptions): void;
  5. public localStorageGet(options: LocalStorageGetOptions): string | null;

3.15.3 参数说明

LocalStorageSetOptions

参数名 说明 必填 类型
key 存储的键名 string
value 存储的数据 object / any

LocalStorageGetOptions

参数名 说明 必填 类型
key 存储的键名 string

3.15.4 返回说明

LocalStorageGet 方法返回范性值, 需要注意类型要和set时的类型匹配, 也可能是null值

3.15.5 错误码说明

3.15.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.LocalStorageSet(new LocalStorageSetOptions()
  3. {
  4. key = "language",
  5. value = Language.en_US
  6. });
  7. Language language = SDK.LocalStorageGet<Language>(new LocalStorageGetOptions()
  8. {
  9. key = "language"
  10. });
Typescript
  1. import sdk, {Language} from "@platform-sdk/global-web";
  2. sdk.localStorageSet({
  3. key: "language",
  4. value: Language.en_US
  5. });
  6. const language = sdk.localStorageGet({
  7. key: "language"
  8. }); // string "0"

3.16 游戏资源版本号更新接口(选接)

3.16.1 功能说明

使用 setGameResVersion 方法更新游戏资源版本号.

3.16.2 接口定义

Unity
  1. public static void SetGameResVersion(string version);
Typescript
  1. public setGameResVersion(version: string): void;

3.16.3 参数说明

version 游戏资源版本号

3.16.4 返回说明

3.16.5 错误码说明

3.16.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. SDK.SetGameResVersion("9.9.9");
Typescript
  1. import sdk from "@platform-sdk/global-web";
  2. sdk.setGameResVersion("9.9.9");

3.17 收藏书签接口(选接)

3.17.1 功能说明

使用 bookmarkPage 方法来将当前页面保存到浏览器书签.

3.17.2 接口定义

Unity
  1. public static Task BookmarkPage();
Typescript
  1. public bookmarkPage(): Promise<void>;

3.17.3 参数说明

3.17.4 返回说明

Task / Promise<void>

保存书签成功/保存书签失败回调

3.17.5 错误码说明

错误码 描述
00040000 请在浏览器菜单中添加此页面到书签或主屏幕。
00040001 请按 Cmd + D 添加此页到书签。
00040002 请按 Ctrl + D 添加此页到书签。

3.17.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. try
  3. {
  4. await SDK.BookmarkPage();
  5. }
  6. catch (SDKException e)
  7. {
  8. Debug.Log("BookmarkPage Error", e.code);
  9. }
Typescript
  1. import sdk from "@platform-sdk/global-web";
  2. try {
  3. await sdk.bookmarkPage();
  4. } catch (e) {
  5. if (e instanceof SdkError) {
  6. console.log("BookmarkPage Error", e.code);
  7. }
  8. }

3.18 复制文本到剪切板接口(选接)

3.18.1 功能说明

使用 copyToClipboard 方法来将输入内容复制到剪切板.

3.18.2 接口定义

Unity
  1. public static Task CopyToClipboard(string text);
Typescript
  1. public copyToClipboard(text: string): Promise<void>;

3.18.3 参数说明

string
需要复制的文本内容

3.18.4 返回说明

Task / Promise<void>

复制文本成功回调, 复制文本失败回调

3.18.5 错误码说明

错误码 描述
00050000 复制失败, 详情: (具体原因)

3.18.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. try
  3. {
  4. await SDK.CopyToClipboard("要复制的文本");
  5. }
  6. catch (SDKException e)
  7. {
  8. Debug.Log("CopyToClipboard Error", e.code);
  9. }
Typescript
  1. import sdk, {SdkError} from "@platform-sdk/global-web";
  2. try {
  3. await sdk.copyToClipboard("要复制的文本");
  4. } catch (e) {
  5. if (e instanceof SdkError) {
  6. console.log("CopyToClipboard Error", e.code);
  7. }
  8. }

3.19 全屏相关接口(选接)

3.19.1 功能说明

需要先使用 fullScreenEnabled 方法来判断当前设备是否支持全屏, 再使用 enterFullScreen(进入全屏)、exitFullScreen(退出全屏)、toggleFullScreen(切换全屏)、fullScreen(判断当前是否全屏)等方法.
需要注意的是有些设备即使fullScreenEnabled返回的是可全屏, 在调用enterFullScreenexitFullScreentoggleFullScreen方法时也可能返回不支持全屏的异常, 主要是在一些IOS设备会有一些安全限制导致全屏失败.

3.19.2 接口定义

Unity
  1. /**
  2. * 进入全屏
  3. */
  4. public static Task EnterFullScreen();
  5. /**
  6. * 退出全屏
  7. */
  8. public static Task ExitFullScreen();
  9. /**
  10. * 切换全屏, 非全屏状态时进入全屏, 全屏状态时退出全屏
  11. */
  12. public static Task ToggleFullScreen();
  13. /**
  14. * 当前全屏判断
  15. */
  16. public static bool FullScreen();
  17. /**
  18. * 设备是否支持全屏
  19. */
  20. public static bool FullScreenEnabled();
Typescript
  1. public enterFullScreen(): Promise<void>;
  2. public exitFullScreen(): Promise<void>;
  3. public toggleFullScreen(): Promise<void>;
  4. public fullScreen(): boolean;
  5. public fullScreenEnabled(): boolean;

3.19.3 参数说明

3.19.4 返回说明

Task / Promise<void>

返回全屏/退出全屏 成功/失败

3.19.5 错误码说明

错误码 描述
00060000 不支持全屏/退出全屏

3.19.6 示例

Unity
  1. using PlatformSDK.Bridge;
  2. try
  3. {
  4. await SDK.EnterFullScreen();
  5. Debug.Log("EnterFullScreen Success");
  6. }
  7. catch (SDKException e)
  8. {
  9. Debug.Log("EnterFullScreen Error", e.code);
  10. }
  11. try
  12. {
  13. await SDK.ExitFullScreen();
  14. Debug.Log("ExitFullScreen Success");
  15. }
  16. catch (SDKException e)
  17. {
  18. Debug.Log("ExitFullScreen Error", e.code);
  19. }
  20. try
  21. {
  22. await SDK.ToggleFullScreen();
  23. Debug.Log("ToggleFullScreen Success");
  24. }
  25. catch (SDKException e)
  26. {
  27. Debug.Log("ToggleFullScreen Error", e.code);
  28. }
  29. var fullScreen = SDK.FullScreen();
  30. Debug.Log("当前是否全屏:", fullScreen);
  31. var fullScreenEnabled = SDK.FullScreenEnabled();
  32. Debug.Log("是否支持全屏:", fullScreenEnabled);
Typescript
  1. import sdk, {SdkError} from "@platform-sdk/global-web";
  2. try {
  3. await sdk.enterFullScreen();
  4. } catch (e) {
  5. if (e instanceof SdkError) {
  6. console.log("enterFullScreen Error", e.code);
  7. }
  8. }
  9. try {
  10. await sdk.exitFullScreen();
  11. } catch (e) {
  12. if (e instanceof SdkError) {
  13. console.log("exitFullScreen Error", e.code);
  14. }
  15. }
  16. try {
  17. await sdk.toggleFullScreen();
  18. } catch (e) {
  19. if (e instanceof SdkError) {
  20. console.log("toggleFullScreen Error", e.code);
  21. }
  22. }
  23. var fullScreen = sdk.fullScreen();
  24. console.log("当前是否全屏:" + fullScreen);
  25. var fullScreenEnabled = sdk.fullScreenEnabled();
  26. console.log("是否支持全屏:", fullScreenEnabled);