Unity 之 代码获取IOS设备型号
【摘要】 两种方式获取IOS设备型号,一种可以根据机型进行处理,另外一种则是按照屏幕比例进行分类,一起来了解一下吧~
一,通过机器型号校验
1.1 逻辑解释
在https://www.theiphonewiki.com/wiki/Models上有所有IOS设备型号的代码(最新设备会同步更新),下拉可以看到各种iPhone手机的代码型号,如下图红框:
找到设备型号后,即可在代码中进行如下逻辑处理
if(SystemInfo.deviceModel.Equals("iPhone13,4"))
{
todo... 是iPhone 13 Pro Max 型号设备
}
1.2 实现代码
#region 校验IPhone机型
/// <summary>
/// 当前运行设备型号
/// -1:默认, 0:正常iph, 1:X系列iph, 2:Ipad
/// </summary>
private static int _iphoneDevice = -1;
/// <summary>
/// Apple苹果设备型号代码deviceModel
/// 校验当前运行IPhone机型
/// 0:正常iph, 1:X系列iph, 2:Ipad
/// </summary>
/// <returns></returns>
public static int GetIphoneDevice()
{
if (_iphoneDevice != -1) return _iphoneDevice;
#if UNITY_EDITOR
_iphoneDevice = 0;
#elif UNITY_IOS
string modelStr = SystemInfo.deviceModel;
string modelType = modelStr.ToLower().Trim().Substring(0, 3);
if (modelType == "iph")
{
// iPhoneX:"iPhone10,3","iPhone10,6" iPhoneXR:"iPhone11,8" iPhoneXS:"iPhone11,2" iPhoneXS Max:"iPhone11,6"
// iPhone 12Pro "iPhone13,3" iPhone 12Pro "iPhone13,4"
bool IsIphoneXDevice = modelStr.Equals("iPhone10,3") || modelStr.Equals("iPhone10,6") ||
modelStr.Equals("iPhone11,8") || modelStr.Equals("iPhone11,2") ||
modelStr.Equals("iPhone11,6") ||
modelStr.Equals("iPhone13,3") || modelStr.Equals("iPhone13,4");
_iphoneDevice = IsIphoneXDevice ? 1 : 0;
}
else if (modelType == "ipa")
{
//iPad机型
_iphoneDevice = 2;
}
else
{
_iphoneDevice = 0;
}
#else
_iphoneDevice = 0;
#endif
//Debug.Log("当前机型ID:" + _iphoneDevice);
return _iphoneDevice;
}
缺点:每当有新的型号的手机发布时,都需要手动添加更新一下,否则会出现新机型是x系列的情况,按照正常机型处理的情况。
二,通过长宽比校验
通过设备的长宽比来校验设备型号,长宽比是1.53
是Pad,长宽比在1.53f
和 1.9
之间,则是正常机型,长宽比大于1.9
的都是长屏手机,则都可安装x系列做适配处理
直接上代码:
/// <summary>
/// 当前运行设备型号
/// 0:正常iph, 1:X系列iph, 2:Ipad
/// </summary>
private int platformType = 0;
private void SetScreenType()
{
float width = Screen.width;
float height = Screen.height;
float value = width / height;
if (value < 1.53f)
{
platformType = 2;
}
else if (value >= 1.53f && value < 1.9f)
{
platformType = 0;
}
else
{
platformType = 1;
}
// todo...各种屏幕设置
//Screen.autorotateToLandscapeLeft = true;
//Screen.autorotateToLandscapeRight = true;
//Screen.autorotateToPortrait = false;
//Screen.autorotateToPortraitUpsideDown = false;
//Screen.orientation = ScreenOrientation.AutoRotation;
}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)