chicken_dy/Assets/WX-WASM-SDK/wechat-default/check-version.js

110 lines
4.0 KiB
JavaScript
Raw Normal View History

2022-08-01 03:47:37 +00:00
const { version, SDKVersion, platform, renderer, system } =
wx.getSystemInfoSync()
function compareVersion(v1, v2) {
return (
v1
.split(".")
.map((v) => v.padStart(2, "0"))
.join("") >=
v2
.split(".")
.map((v) => v.padStart(2, "0"))
.join("")
)
}
const isPc = platform === "windows"
const isIOS = platform === "ios"
const isDevtools = platform === "devtools"
const isMobile = !isPc && !isDevtools
// 是否iOSH5模式
const isH5Renderer = isMobile && renderer === "h5"
// 操作系统版本号
const systemVersionArr = system ? system.split(" ") : []
const systemVersion = systemVersionArr.length
? systemVersionArr[systemVersionArr.length - 1]
: ""
// pc微信版本号不一致需要>=3.3
const isPcWeChatVersionValid = compareVersion(version, "3.3")
// 支持unity小游戏需要基础库>=2.14.0但低版本基础库iOS存在诸多问题将版本最低版本提高到2.17.0
const isLibVersionValid = compareVersion(SDKVersion, "2.17.0")
// 如果是iOSH5基础库需要>=2.19.1
const isH5LibVersionValid = compareVersion(SDKVersion, "2.19.1")
// iOSH5模式支持wss的基础库版本>=2.21.1
const isWssLibVersionValid = compareVersion(SDKVersion, "2.21.1")
// 压缩纹理需要iOS系统版本>=14.0,检测到不支持压缩纹理时会提示升级系统
const isIOSH5SystemVersionValid = compareVersion(systemVersion, "14.0")
// iOS系统版本>=15支持webgl2
const isIOSWebgl2SystemVersionValid = compareVersion(systemVersion, "15.0")
// 是否用了webgl2
const isWebgl2 = () => GameGlobal.managerConfig.contextConfig.contextType === 2
// 是否能以iOSH5模式运行
const canUseH5Renderer = (GameGlobal.canUseH5Renderer =
isH5Renderer && isH5LibVersionValid)
// pc微信版本不满足要求
const isPcInvalid = isPc && !isPcWeChatVersionValid
// 移动设备基础库版本或客户端版本不支持运行unity小游戏
const isMobileInvalid = isMobile && !isLibVersionValid
// 基础库不支持iOSH5
const isIOSH5Invalid = isH5Renderer && !isH5LibVersionValid
// 视情况添加,没用到对应能力就不需要判断
// 是否用了wss
const useWss = false
// 是否只能iOS高档机运行
const disableFallback = false
// iOSH5模式基础库不支持wss
const isWssNotEnable = canUseH5Renderer && !isWssLibVersionValid && useWss
// 压缩纹理需要iOS系统版本>=14.0,检测到不支持压缩纹理时会提示升级系统
const isH5SystemVersionInvalid =
canUseH5Renderer && !isIOSH5SystemVersionValid && disableFallback
// 是否支持webgl2
const isWebgl2SystemVersionInvalid = () => isIOS && isWebgl2() && !isIOSWebgl2SystemVersionValid
/**
* 判断环境是否可使用coverview
* coverview实际需要基础库版本>=2.16.1但因为移动端要>=2.17.0才能运行所以移动端基本都支持coverview
*
* @export
* @returns
*/
export function canUseCoverview() {
return isMobile || isDevtools
}
export default () => {
return new Promise((resolve, reject) => {
if (!isDevtools) {
if (
isPcInvalid ||
isMobileInvalid ||
isIOSH5Invalid ||
isWssNotEnable ||
isH5SystemVersionInvalid ||
isWebgl2SystemVersionInvalid()
) {
wx.showModal({
title: "提示",
content: (isH5SystemVersionInvalid || isWebgl2SystemVersionInvalid())
? "当前操作系统版本过低\n请更新iOS系统后进行游戏"
: "当前微信版本过低\n请更新微信后进行游戏",
showCancel: false,
success(res) {
if (res.confirm) {
wx.exitMiniProgram({
success: (res) => {},
})
}
},
})
return resolve(false)
}
}
return resolve(true)
})
}