该指南旨在详细阐述如何在游戏中融入并利用我们的 SDK。我们的 SDK 搭载了一系列功能,包含初始化、登录、角色信息报告(包括注册、登录和注销)、公告、客服接入、日志上报、礼包码兑换、问卷调查、协议查阅以及支付等。
在开始接入过程之前,必须首先确认游戏的访问地址,并将其提供给我们的技术支持同学。我们会将访问地址先在AF后台进行配置。请注意,一旦地址配置完成,将无法进行更改。
我们将提供’platform-sdk-config’目录 (请联系技术支持以获取)。目录包含所有平台产品的配置文件。需要将目录放置在与index.html文件相同的目录层级中。
以游戏访问地址为 https://xxx.com/game1 为例:
目录的结构应如下所示:
- Build # 游戏打包文件
- TemplateData # 游戏打包文件
- index.html # 游戏打包文件
- platform-sdk-config # 平台提供目录,包含SDK的配置文件
- config.json
- midbase_statlog.json
- static # 游戏可配置此目录图片资源
- default_user_img.png # 用户头像图片
- loading.png # 加载图
- logo.png # 游戏logo图
- top_arrow.png # 菜单键下拉箭头
- style.css # 游戏样式
根据游戏实现的具体需求,可以选择对应的接入语言。目前我们支持 Unity 和 Typescript 。
在游戏的index.html head中引入JS脚本
<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中的版本号()
npm config set @platform-sdk:registry http://nexus.acegames.cn/repository/npm-hosted/
npm install @platform-sdk/web -S
npm update @platform-sdk/web
我们的SDK接口被细致地设计为同步接口(如:login, getServiceId)和异步接口(如:initialize, pay)。
同步接口的目标是确保稳定性,避免出现异常情况。所有请求的结果将被直接返回,确保流程的顺畅性。
异步接口则是为了处理异步操作和可能出现的异常情况。请求的结果通过Task
(在Unity环境中)或Promise
(在Typescript环境中)返回,以实现异步处理。我们采用了统一的异常处理类,SDKException
(在Unity环境中)和SdkError
(在Typescript环境中),以保证异常的统一性和处理的效率。
错误码表
initialize
中注册SDK的生命周期事件。这些事件包括登录成功、账号切换和账号注销等重要操作。00000000
。此时,游戏方需要根据提示进行相应的调整。请注意,为了保证游戏的正常运行,这种情况需要在游戏上线前解决。另外,我们在接口的功能说明中也提供了其他可能出现的异常情况。在激活SDK的各项功能之前,首先需要进行初始化。可以在应用程序启动时调用 initialize
方法:
此方法会使用platform-sdk目录下的配置文件来启动SDK。
初始化过程中,SDK的Header页面将在游戏页面的基础上进行渲染。Header提供 显示当前登录账号、账号切换、客服
为了保证SDK的正常运行,您需要在初始化时注册SDK的生命周期事件,包括登录成功、账号切换和账号注销操作。
/**
* 初始化SDK
*/
public static Task Initialize(InitializeOptions options)
/**
* 初始化SDK
*/
function initialize(options: InitializeOptions): Promise<void>
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 |
Language
枚举类型
Language.en_US
Language.zh_CN
Language.zh_TW
Language.ko_KR
CallbackData<D>
回调数据类型
参数名 | 说明 | 必填 | 类型(Unity/Typescript) |
---|---|---|---|
data | 回调数据 | 否 | R |
success | 回调成功状态 | 是 | bool /boolean |
errorCode | 错误码 | 否 | string |
User
用户信息
参数名 | 说明 | 必填 | 类型 |
---|---|---|---|
userId | 用户ID | 是 | string |
returnJson | 渠道授权数据返回JSON对象 | 是 | string |
userName | 平台用户名 | 是 | string |
token | Token | 是 | string |
userServiceCode | 服务端上报透传, 在角色登录前使用 | 是 | string |
loginType | 当前登录方式; speedy:快登用户 common:用户名密码用户 phone:手机号用户 email: 邮箱用户 thirdHidden:三方授权用户 accessToken:token登录 | 是 | string |
Task
/ Promise<void>
初始化成功/失败回调
错误码 | 描述 |
---|---|
00000000 | 请在index同级目录下未找到/platform-sdk-config/config.json文件 |
onLogin
和onSwitchAccount
的 errorCode
返回说明
错误码 | 描述 |
---|---|
00020000 | 登录/切换账号 失败 |
00020001 | 登录/切换账号 取消登录 |
using PlatformSDK.Bridge;
try
{
await SDK.Initialize(new InitializeOptions()
{
version = "2.3.0",
resVersion = "1.0.0",
language = Language.en_US,
onLogin = (data) =>
{
Debug.Log("Login " + data);
},
onLogout = () =>
{
Debug.Log("Logout Success");
},
onSwitchAccount = (data) =>
{
Debug.Log("SwitchAccount " + data);
},
onFullScreenChange = (fullScreen) =>
{
Debug.Log("onFullScreenChange " + fullScreen);
}
});
Debug.Log("Initialized Success");
}
catch (SDKException e)
{
Debug.Log("Initialized Error: code: " + e.code + ", message: " + e.message);
}
import sdk, {Language, SdkError} from "@platform-sdk/global-web";
try {
await sdk.initialize({
version: '2.3.0',
resVersion: '1.0.0',
language: Language.en_US,
onLogin: u => {
console.log('Login Success', u);
},
onSwitchAccount: () => {
console.log('SwitchAccount Success');
},
onLogout: () => {
console.log('Logout Success');
},
// 监听全屏改变
onFullScreenChange: (fullScreen) => {
console.log('onFullScreenChange Success ' + fullScreen);
}
});
console.log('Initialized Success');
} catch (e) {
if (e instanceof SdkError) {
console.log('Initialized Error: code: ' + e.code + ', message: ' + e.message);
}
}
使用 login
方法可以启动登录流程:
一旦登录成功,SDK会执行在初始化过程中注册的登录成功回调。
/**
* 登录
*/
public static void Login()
/**
* 登录
*/
function login(): void
无
无
无
using PlatformSDK.Bridge;
SDK.Login();
import sdk from "@platform-sdk/global-web";
sdk.login();
使用 reportRoleInfo
方法上报角色信息, 上报类型为logout时其它参数才可为空, 其它上报类型所有参数都不为空
/**
* 角色信息上报
*/
public static void ReportRoleInfo(ReportRoleInfoOptions options)
/**
* 角色信息上报
*/
function reportRoleInfo(options: ReportRoleInfoOptions): void
ReportRoleInfoOptions
参数名 | 说明 | 必填 | 类型(Unity/Typescript) |
---|---|---|---|
sendType | 上报类型: 角色注册、角色登录、角色信息修改、角色注销 | 是 | ReportRoleInfoSendType |
serverId | 游戏服ID | 是 | string |
serverName | 游戏服名称 | 是 | string |
roleId | 角色ID | 是 | string |
roleName | 角色名称 | 是 | string |
roleLevel | 角色等级 | 是 | string |
vipLevel | VIP等级 | 是 | string |
roleCreateTime | 角色创建时间 | 是 | double / number |
无
无
using PlatformSDK.Bridge;
SDK.ReportRoleInfo(new ReportRoleInfoOptions()
{
sendType = ReportRoleInfoSendType.login,
serverId = "1",
serverName = "1",
roleId = "1",
roleName = "1",
roleLevel = "1",
vipLevel = "1",
roleCreateTime = 1701403244126
});
import sdk, {ReportRoleInfoSendType} from "@platform-sdk/global-web";
sdk.reportRoleInfo({
sendType: ReportRoleInfoSendType.login,
serverId: "1",
serverName: "1",
roleId: "1",
roleName: "1",
roleLevel: "1",
vipLevel: "1",
roleCreateTime: 1701403244126
});
使用 pay
方法拉起SDK支付
/**
* 支付
*/
public static Task<Order> Pay(PayOptions options)
/**
* 支付
*/
function pay(options: PayOptions): Promise<Order>
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 | 泰铢 | 萨当 |
回调成功: 支付成功
Order
参数名 | 说明 | 类型 |
---|---|---|
orderId | 订单ID | string |
productId | 商品ID | string |
回调失败: 支付失败/用户取消
错误码 | 描述 |
---|---|
00030001 | 取消支付 |
00030000 | 支付失败 |
using PlatformSDK.Bridge;
try
{
var order = await SDK.Pay(new PayOptions()
{
productId = "1",
productName = "1",
productDesc = "1",
price = "1",
quantity = 1,
roleLevel = "1",
vipLevel = "1"
});
Debug.Log("Pay Success" + order.orderId);
}
catch (SDKException e)
{
Debug.Log("Pay Error: ", e.code);
}
import sdk, {SdkError} from "@platform-sdk/global-web";
try {
await sdk.pay({
productId: '1',
productName: '1',
productDesc: '1',
price: '1',
quantity: 1,
roleLevel: '1',
vipLevel: '1'
});
console.log("Pay Success");
} catch (e) {
if (e instanceof SdkError) {
console.log("Pay Error: ", e.code);
}
}
使用 getServiceId
方法获取serviceId, 调用前需要上报角色登录
/**
* 获取ServiceId
*/
public static string GetServiceId()
/**
* 获取ServiceId
*/
function getServiceId(): string
无
返回 serviceId 产品平台ID
无
using PlatformSDK.Bridge;
var serviceId = SDK.GetServiceId();
Debug.Log("GetServiceId Success: " + serviceId);
import sdk from "@platform-sdk/global-web";
const serviceId = sdk.getServiceId();
console.log("GetServiceId Success: " + serviceId);
使用 analyticsLog
方法来进行三方广告平台打点, 目前支持AppsFlyer
/**
* 第三方广告平台打点
*/
public static void AnalyticsLog(AnalyticsLogOptions options)
/**
* 第三方广告平台打点
*/
function analyticsLog(options: AnalyticsLogOptions): void
AnalyticsLogOptions
参数名 | 说明 | 必填 | 类型 |
---|---|---|---|
eventKey | 事件Key | 是 | string |
eventParams | 事件参数 | 否 | Dictionary<string, string> / Record<string, string> |
无
无
using PlatformSDK.Bridge;
SDK.AnalyticsLog(new AnalyticsLogOptions()
{
eventKey = "open"
});
import sdk from "@platform-sdk/global-web";
sdk.analyticsLog({
eventKey: "open"
});
使用 reportLog
方法进行日志上报
/**
* 日志上报
*/
public static void ReportLog(ReportLogOptions options)
/**
* 日志上报
*/
function reportLog(options: ReportLogOptions): Promise<void>
ReportLogOptions
参数名 | 说明 | 必填 | 类型 |
---|---|---|---|
logId | 事件ID | 是 | string |
logKey | 事件Key | 是 | string |
map | 事件参数 | 是 | Dictionary<string, string> /Record<string, string> |
成功回调表示日志上报成功
无
using PlatformSDK.Bridge;
Dictionary<string, string> map = new Dictionary<string, string>();
map.Add("actId", "10000");
map.Add("actName", "开始新手引导");
map.Add("detail", "回合开始");
map.Add("classifiedId", "00000000");
map.Add("classifiedName", "分类1");
map.Add("roleLevel", "1");
map.Add("roleVipLevel", "1");
map.Add("taskId", "1");
map.Add("taskName", "1");
SDK.ReportLog(new ReportLogOptions()
{
logId = "1001",
logKey = "role-task",
map = map
});
import sdk from "@platform-sdk/global-web";
sdk.reportLog({
logId: '1001',
logKey: 'role-task',
map: {
actId: '123',
actName: '123name',
classifiedId: '1',
classifiedName: '1',
detail: 'message'
}
});
使用 share
方法来进行分享, 目前支持Facebook分享
/**
* 分享
*/
public static void Share(ShareOptions options)
/**
* 分享
*/
function share(options: ShareOptions): void
ShareOptions
参数名 | 说明 | 必填 | 类型 |
---|---|---|---|
type | 分享类型 | 是 | ShareType |
url | 分享链接 不传默认为当前页面地址 | 否 | string |
ShareType
枚举类型
ShareType.Facebook
无
无
using PlatformSDK.Bridge;
SDK.Share(new ShareOptions()
{
type = ShareType.Facebook
});
import sdk, {ShareType} from "@platform-sdk/global-web";
sdk.share({
type: ShareType.Facebook
});
使用 openNotice
方法打开公告
/**
* 打开公告
*/
public static Task OpenNotice(OpenNoticeOptions options)
/**
* 打开公告
*/
function openNotice(options: OpenNoticeOptions): Promise<void>
OpenNoticeOptions
参数名 | 说明 | 必填 | 类型(Unity/Typescript) |
---|---|---|---|
onClose | 上报类型: 角色注册、角色登录、角色信息修改、角色注销 | 否 | Action / () => void |
异步回调表示成功打开公告
错误码 | 说明 |
---|---|
00090000 | 未配置公告 |
using PlatformSDK.Bridge;
try
{
await SDK.OpenNotice(new OpenNoticeOptions()
{
onClose = () =>
{
Debug.Log("Close Notice");
}
});
Debug.Log("Open Notice Success");
}
catch (SDKException e)
{
Debug.Log("Open Notice Error: " + e.code);
}
import sdk, {SdkError} from "@platform-sdk/global-web";
try {
await sdk.openNotice({
onClose: () => {
console.log("Close Notice");
}
})
console.log("Open Notice Success");
} catch(e) {
if (e instanceof SdkError) {
console.log("Open Notice Error: " + e.code);
}
}
使用 openProtocol
方法来打开协议页面
/**
* 打开公告
*/
public static void OpenProtocol(OpenProtocolOptions options)
/**
* 打开公告
*/
function openProtocol(options: OpenProtocolOptions): void
OpenProtocolOptions
参数名 | 说明 | 必填 | 类型(Unity/Typescript) |
---|---|---|---|
onAgree | 点击了同意(可做为协议关闭回调) | 否 | Action / () => void |
onReject | 点击了拒绝 | 否 | Action / () => void |
无
无
using PlatformSDK.Bridge;
SDK.OpenProtocol(new OpenProtocolOptions()
{
onAgree = () =>
{
Debug.Log("点击了同意");
},
onReject = () =>
{
Debug.Log("点击了拒绝");
}
});
import sdk from "@platform-sdk/global-web";
sdk.openProtocol({
onAgree: () => {
console.log("点击了同意");
},
onReject: () => {
console.log("点击了拒绝");
}
});
使用 openQuestionnaire
方法来打开问卷, 会在新的窗口用打开问卷页面
/**
* 打开问卷
*/
public static Task OpenQuestionnaire(OpenQuestionnaireOptions options)
/**
* 打开问卷
*/
function openQuestionnaire(options: OpenQuestionnaireOptions): Promise<void>
OpenQuestionnaireOptions
参数名 | 说明 | 必填 | 类型(Unity/Typescript) |
---|---|---|---|
questionId | 平台问卷ID | 是 | string |
customParams | 自定义参数 | 是 | Dictionary<string, string> / Record<string, string> |
回调成功: 成功打开问卷
回调失败: 问卷打开失败
using PlatformSDK.Bridge;
var customParams = new Dictionary<string, string>
{
{ "roleId", "1" }
};
try
{
await SDK.OpenQuestionnaire(new OpenQuestionnaireOptions()
{
questionId = "1",
customParams = customParams
});
Debug.Log("Open Questionnaire Success");
}
catch (SDKException e)
{
Debug.Log("Open Questionnaire Error: " + e.code);
}
import sdk, {SdkError} from "@platform-sdk/global-web";
try {
await sdk.openQuestionnaire({
questionId: "1",
customParams: {
roleId: "1"
}
});
console.log("Open Questionnaire Success");
} catch (e) {
if (e instanceof SdkError) {
console.log("Open Questionnaire Fail: " + e.code);
}
}
使用 giftCodeExchange
方法进行礼包码兑换
/**
* 礼包码兑换
*/
public static Task GiftCodeExchange(GiftCodeExchangeOptions options)
/**
* 礼包码兑换
*/
function giftCodeExchange(options: GiftCodeExchangeOptions): Promise<void>
GiftCodeExchangeOptions
参数名 | 说明 | 必填 | 类型 |
---|---|---|---|
code | 礼包码 | 是 | string |
回调表示兑换成功
using PlatformSDK.Bridge;
try
{
await SDK.GiftCodeExchange(new GiftCodeExchangeOptions()
{
code = 'xxxx'
});
Debug.Log("GiftCodeExchange Success");
}
catch (SDKException e)
{
Debug.Log("GiftCodeExchange Error", e.code);
}
import sdk, {SdkError} from "@platform-sdk/global-web";
try {
await sdk.giftCodeExchange({
code: 'xxxx'
});
console.log("GiftCodeExchange Success");
} catch (e) {
if (e instanceof SdkError) {
console.log("GiftCodeExchange Error", e.code);
}
}
使用 switchLanguage
方法切换SDK语言
/**
* 切换语言
*/
public static Task SwitchLanguage(Language language)
/**
* 切换语言
*/
function switchLanguage(language: Language): Promise<void>
Language
枚举类型
Language.en_US
Language.zh_CN
Language.zh_TW
Language.ko_KR
设置成功, 如不需要可以不等待回调
无
using PlatformSDK.Bridge;
SDK.SwitchLanguage(Language.en_US);
import sdk, {Language} from "@platform-sdk/global-web";
sdk.switchLanguage(Language.en_US);
使用 openCustomerService
方法拉起SDK客服界面
/**
* 打开客服
*/
public static void OpenCustomerService()
/**
* 打开客服
*/
public openCustomerService(): void
无
无
无
using PlatformSDK.Bridge;
SDK.OpenCustomerService();
import sdk from "@platform-sdk/global-web";
sdk.openCustomerService();
使用 localStorageSave
方法来保存数据到本地.
使用localStorageGet
方法来获取保存在本地的数据
/**
* 保存数据
*/
public static void LocalStorageSet(LocalStorageSetOptions options);
/**
* 获取数据
*/
public static T? LocalStorageGet<T>(LocalStorageGetOptions options);
/**
* 保存数据
*/
public localStorageSet(options: LocalStorageSetOptions): void;
public localStorageGet(options: LocalStorageGetOptions): string | null;
LocalStorageSetOptions
参数名 | 说明 | 必填 | 类型 |
---|---|---|---|
key | 存储的键名 | 是 | string |
value | 存储的数据 | 是 | object / any |
LocalStorageGetOptions
参数名 | 说明 | 必填 | 类型 |
---|---|---|---|
key | 存储的键名 | 是 | string |
LocalStorageGet
方法返回范性值, 需要注意类型要和set时的类型匹配, 也可能是null值
无
using PlatformSDK.Bridge;
SDK.LocalStorageSet(new LocalStorageSetOptions()
{
key = "language",
value = Language.en_US
});
Language language = SDK.LocalStorageGet<Language>(new LocalStorageGetOptions()
{
key = "language"
});
import sdk, {Language} from "@platform-sdk/global-web";
sdk.localStorageSet({
key: "language",
value: Language.en_US
});
const language = sdk.localStorageGet({
key: "language"
}); // string "0"
使用 setGameResVersion
方法更新游戏资源版本号.
public static void SetGameResVersion(string version);
public setGameResVersion(version: string): void;
version
游戏资源版本号
无
无
using PlatformSDK.Bridge;
SDK.SetGameResVersion("9.9.9");
import sdk from "@platform-sdk/global-web";
sdk.setGameResVersion("9.9.9");
使用 bookmarkPage
方法来将当前页面保存到浏览器书签.
public static Task BookmarkPage();
public bookmarkPage(): Promise<void>;
无
Task
/ Promise<void>
保存书签成功/保存书签失败回调
错误码 | 描述 |
---|---|
00040000 | 请在浏览器菜单中添加此页面到书签或主屏幕。 |
00040001 | 请按 Cmd + D 添加此页到书签。 |
00040002 | 请按 Ctrl + D 添加此页到书签。 |
using PlatformSDK.Bridge;
try
{
await SDK.BookmarkPage();
}
catch (SDKException e)
{
Debug.Log("BookmarkPage Error", e.code);
}
import sdk from "@platform-sdk/global-web";
try {
await sdk.bookmarkPage();
} catch (e) {
if (e instanceof SdkError) {
console.log("BookmarkPage Error", e.code);
}
}
使用 copyToClipboard
方法来将输入内容复制到剪切板.
public static Task CopyToClipboard(string text);
public copyToClipboard(text: string): Promise<void>;
string
需要复制的文本内容
Task
/ Promise<void>
复制文本成功回调, 复制文本失败回调
错误码 | 描述 |
---|---|
00050000 | 复制失败, 详情: (具体原因) |
using PlatformSDK.Bridge;
try
{
await SDK.CopyToClipboard("要复制的文本");
}
catch (SDKException e)
{
Debug.Log("CopyToClipboard Error", e.code);
}
import sdk, {SdkError} from "@platform-sdk/global-web";
try {
await sdk.copyToClipboard("要复制的文本");
} catch (e) {
if (e instanceof SdkError) {
console.log("CopyToClipboard Error", e.code);
}
}
需要先使用 fullScreenEnabled
方法来判断当前设备是否支持全屏, 再使用 enterFullScreen
(进入全屏)、exitFullScreen
(退出全屏)、toggleFullScreen
(切换全屏)、fullScreen
(判断当前是否全屏)等方法.
需要注意的是有些设备即使fullScreenEnabled
返回的是可全屏, 在调用enterFullScreen
、exitFullScreen
、toggleFullScreen
方法时也可能返回不支持全屏的异常, 主要是在一些IOS设备会有一些安全限制导致全屏失败.
/**
* 进入全屏
*/
public static Task EnterFullScreen();
/**
* 退出全屏
*/
public static Task ExitFullScreen();
/**
* 切换全屏, 非全屏状态时进入全屏, 全屏状态时退出全屏
*/
public static Task ToggleFullScreen();
/**
* 当前全屏判断
*/
public static bool FullScreen();
/**
* 设备是否支持全屏
*/
public static bool FullScreenEnabled();
public enterFullScreen(): Promise<void>;
public exitFullScreen(): Promise<void>;
public toggleFullScreen(): Promise<void>;
public fullScreen(): boolean;
public fullScreenEnabled(): boolean;
无
Task
/ Promise<void>
返回全屏/退出全屏 成功/失败
错误码 | 描述 |
---|---|
00060000 | 不支持全屏/退出全屏 |
using PlatformSDK.Bridge;
try
{
await SDK.EnterFullScreen();
Debug.Log("EnterFullScreen Success");
}
catch (SDKException e)
{
Debug.Log("EnterFullScreen Error", e.code);
}
try
{
await SDK.ExitFullScreen();
Debug.Log("ExitFullScreen Success");
}
catch (SDKException e)
{
Debug.Log("ExitFullScreen Error", e.code);
}
try
{
await SDK.ToggleFullScreen();
Debug.Log("ToggleFullScreen Success");
}
catch (SDKException e)
{
Debug.Log("ToggleFullScreen Error", e.code);
}
var fullScreen = SDK.FullScreen();
Debug.Log("当前是否全屏:", fullScreen);
var fullScreenEnabled = SDK.FullScreenEnabled();
Debug.Log("是否支持全屏:", fullScreenEnabled);
import sdk, {SdkError} from "@platform-sdk/global-web";
try {
await sdk.enterFullScreen();
} catch (e) {
if (e instanceof SdkError) {
console.log("enterFullScreen Error", e.code);
}
}
try {
await sdk.exitFullScreen();
} catch (e) {
if (e instanceof SdkError) {
console.log("exitFullScreen Error", e.code);
}
}
try {
await sdk.toggleFullScreen();
} catch (e) {
if (e instanceof SdkError) {
console.log("toggleFullScreen Error", e.code);
}
}
var fullScreen = sdk.fullScreen();
console.log("当前是否全屏:" + fullScreen);
var fullScreenEnabled = sdk.fullScreenEnabled();
console.log("是否支持全屏:", fullScreenEnabled);