如何改进WebGL应用的设备检测代码,区分iOS与Android?
实现WebGL移动端iOS/Android设备检测改进
你可以通过扩展现有JS插件和Unity代码,实现对iOS、Android设备的精准识别,具体修改如下:
1. 更新Plugin.jslib文件
在原有移动端检测基础上,新增两个函数分别检测iOS和Android设备,利用浏览器navigator.userAgent进行判断:
var MyPlugin = { IsMobile: function() { return UnityLoader.SystemInfo.mobile; }, IsIOS: function() { // 匹配iPhone/iPad/iPod,排除Windows Phone的误判 return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; }, IsAndroid: function() { return /Android/.test(navigator.userAgent); } }; mergeInto(LibraryManager.library, MyPlugin);
2. 修改Unity端代码
新增对应的外部调用函数,并封装成公开方法供业务逻辑使用:
[DllImport("__Internal")] private static extern bool IsMobile(); [DllImport("__Internal")] private static extern bool IsIOS(); [DllImport("__Internal")] private static extern bool IsAndroid(); public bool IsMobileDevice() { #if !UNITY_EDITOR && UNITY_WEBGL return IsMobile(); #endif return false; } public bool IsIOSDevice() { #if !UNITY_EDITOR && UNITY_WEBGL return IsIOS(); #endif return false; } public bool IsAndroidDevice() { #if !UNITY_EDITOR && UNITY_WEBGL return IsAndroid(); #endif return false; }
说明
- 利用
navigator.userAgent是Web环境下检测设备系统的常用可靠方式,针对iOS做了特殊处理(排除MSStream),避免将Windows Phone设备误判为iOS。 - 保持原有
IsMobile函数的兼容性,新增的两个函数可独立调用,也可结合使用(比如先判断是否是移动端,再细分系统)。
内容的提问来源于stack exchange,提问作者Yidi
相关产品推荐
相关产品推荐

