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)