Unity 之 代码获取IOS设备型号 -- 做分辨率适配

Posted 陈言必行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 之 代码获取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.53f1.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;
}

以上是关于Unity 之 代码获取IOS设备型号 -- 做分辨率适配的主要内容,如果未能解决你的问题,请参考以下文章

获取iOS设备的型号

unity探索者之获取设备当前电量

iOS获取设备型号

iOS 获取设备版本型号

iOS获取设备型号设备类型等信息

iOS-获取Model(设备型号)Version(设备版本)app(程序版本)等