iOS 9.2.1的手Q无法开启webgl

最新版本的手Q,User Agent是:
Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D15 QQ/7.2.0.439 V1_IPH_SQ_7.2.0_1_APP_A Pixel/750 Core/UIWebView NetType/WIFI QBWebViewType/1

而同一个手机的微信和Safari都能开启webgl。罪魁祸首是引擎CCSys.js的下面代码:
if (_supportWebGL && sys.os === sys.OS_IOS && sys.osMainVersion === 9) {
// Not activating WebGL in iOS 9 UIWebView because it may crash when entering background
if (!win.indexedDB) {
_supportWebGL = false;
}
}

很奇怪iOS 9.2.1的手Q浏览器的window.indexedDB是undefined,而iOS 10同样版本手Q,window.indexedDB不是undefined。

实际上我尝试了多次后台切换,并没有造成崩溃。canvas渲染一个性能差,另外Mask、spine的渲染都有问题,所以其实比崩溃更可怕。

https://david-smith.org/iosversionstats/
iOS 9.x目前还有9.6%的市场占有率,而且手Q是一个非常重要的H5战场,希望cocos团队重视这个问题。虽然我会删除CCSys.js相关判断代码来做适应,但其他一些开发者容易遇到这个坑。

即使针对手Q做特判都可以的。实在是手Q太重要了。

需要 spine 和 mesh 渲染,或者嵌套 mask 等,的确需要在 webgl 下才能做到,这个崩溃的问题也是存在的,只是对于比较轻量级的游戏概率小一些,我尽快去掉这个判断吧,如果实在崩溃了,大家再想办法好了,UIWebView 的确是一个深坑

注释不是写得很清楚了么?很多比较重度的游戏都会崩溃的,可能你们的游戏比较轻量?

有点奇怪,照理说手Q微信都开始用腾讯自己的浏览器内核,不知道为何手Q就有问题。

这个问题从玩家角度来说,打完游戏切到后台,手Q崩溃了,玩家可能会觉得手Q有问题,再重新打开手Q玩游戏,这样游戏过程起码都是正常的。但为了防止崩溃,游戏显示异常了,玩家会觉得游戏真烂,我才不要玩,直接就流失了。

所以本质上也是个甩锅的过程。

ios 就是 UIWebView 吧?这个没办法的。我们当时就在腾讯,是在腾讯的提议下禁用了 webgl

哦,原来是腾讯甩的锅。那了解了,多谢回复。