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)
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|