mirror of
https://github.com/Gongxh0901/kunpolibrary
synced 2025-04-23 03:48:41 +00:00
125 lines
3.3 KiB
TypeScript
125 lines
3.3 KiB
TypeScript
|
/**
|
|||
|
* @Author: Gongxh
|
|||
|
* @Date: 2025-04-11
|
|||
|
* @Description: 字节跳动小游戏工具类
|
|||
|
*/
|
|||
|
|
|||
|
import { LaunchParams } from "@douyin-microapp/typings/types/app";
|
|||
|
import { warn } from "../../tool/log";
|
|||
|
import { IMiniCommon } from "../interface/IMiniCommon";
|
|||
|
|
|||
|
export class BytedanceCommon implements IMiniCommon {
|
|||
|
private _launchOptions: BytedanceMiniprogram.LaunchParams = null;
|
|||
|
|
|||
|
private _systemInfo: BytedanceMiniprogram.SystemInfo = null;
|
|||
|
private _envInfo: BytedanceMiniprogram.EnvInfo = null;
|
|||
|
|
|||
|
/**
|
|||
|
* @internal
|
|||
|
*/
|
|||
|
constructor() {
|
|||
|
this._launchOptions = tt.getLaunchOptionsSync();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取冷启动参数
|
|||
|
*/
|
|||
|
public getLaunchOptions(): LaunchParams {
|
|||
|
return this._launchOptions;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取热启动参数
|
|||
|
*/
|
|||
|
public getHotLaunchOptions(): LaunchParams {
|
|||
|
warn("字节跳动小游戏未提供热启动参数获取方式,请在 onShow 中获取");
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取基础库版本号
|
|||
|
*/
|
|||
|
public getLibVersion(): string {
|
|||
|
return this.getSystemInfo()?.SDKVersion || "0.0.1";
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 宿主程序版本 (这里指今日头条、抖音等版本)
|
|||
|
*/
|
|||
|
public getHostVersion(): string {
|
|||
|
return this.getSystemInfo()?.version || "0.0.1";
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 宿主 APP 名称。示例:"Toutiao"
|
|||
|
* 见 [https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/system/system-information/tt-get-system-info-sync]
|
|||
|
*/
|
|||
|
public getHostName(): string {
|
|||
|
return this.getSystemInfo()?.appName || "unknown";
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取运行平台
|
|||
|
*/
|
|||
|
public getPlatform(): 'ios' | 'android' | 'ohos' | 'windows' | 'mac' | 'devtools' {
|
|||
|
return this.getSystemInfo().platform as ('ios' | 'android' | 'ohos' | 'windows' | 'mac' | 'devtools');
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取版本类型
|
|||
|
*/
|
|||
|
public getEnvType(): 'release' | 'debug' {
|
|||
|
return this.getEnvInfo().microapp.envType == "production" ? "release" : "debug";
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 退出小程序
|
|||
|
*/
|
|||
|
public exitMiniProgram(): void {
|
|||
|
tt.exitMiniProgram?.({});
|
|||
|
}
|
|||
|
|
|||
|
public getScreenSize(): { width: number, height: number } {
|
|||
|
const systemInfo = this.getSystemInfo();
|
|||
|
return {
|
|||
|
width: systemInfo.screenWidth,
|
|||
|
height: systemInfo.screenHeight,
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 复制到剪切板
|
|||
|
*/
|
|||
|
public setClipboardData(text: string): void {
|
|||
|
tt.setClipboardData({
|
|||
|
data: text,
|
|||
|
fail: (res: { errMsg: string, errNo?: number }) => {
|
|||
|
warn(`复制到剪切板失败 errCode:${res.errNo} errMsg:${res.errMsg}`);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
private getEnvInfo(): BytedanceMiniprogram.EnvInfo {
|
|||
|
if (this._envInfo) {
|
|||
|
return this._envInfo;
|
|||
|
}
|
|||
|
if (tt.getEnvInfoSync) {
|
|||
|
this._envInfo = tt.getEnvInfoSync();
|
|||
|
return this._envInfo;
|
|||
|
}
|
|||
|
warn("getEnvInfo 失败");
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
private getSystemInfo(): BytedanceMiniprogram.SystemInfo {
|
|||
|
if (this._systemInfo) {
|
|||
|
return this._systemInfo;
|
|||
|
}
|
|||
|
if (tt.getSystemInfoSync) {
|
|||
|
this._systemInfo = tt.getSystemInfoSync();
|
|||
|
return this._systemInfo;
|
|||
|
}
|
|||
|
warn("getSystemInfo 失败");
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|