zoukankan      html  css  js  c++  java
  • iOS判断iPhone型号

    链接: http://stackoverflow.com/questions/11197509/ios-how-to-get-device-make-and-model

    http://stackoverflow.com/questions/26028918/ios-how-to-determine-iphone-model-in-swift

    这种是在较高层次获取设备类型,返回的是 iPhone , iPod , iPad 。适合要求不高的。

    UIDevice.currentDevice().model

      

    以下可以获取具体型号信息:

    Swift Code:

    //
    //  UIDeviceExtension.swift
    //  StopSmokingPrograms
    //
    //  Created by Fran on 15/12/29.
    //  Copyright © 2015年 kimree. All rights reserved.
    //
    
    import Foundation
    
    public enum DeviceModel : String {
        case Simulator = "Simulator/Sandbox",
        iPod1          = "iPod 1",
        iPod2          = "iPod 2",
        iPod3          = "iPod 3",
        iPod4          = "iPod 4",
        iPod5          = "iPod 5",
        iPad2          = "iPad 2",
        iPad3          = "iPad 3",
        iPad4          = "iPad 4",
        iPhone4        = "iPhone 4",
        iPhone4S       = "iPhone 4S",
        iPhone5        = "iPhone 5",
        iPhone5S       = "iPhone 5S",
        iPhone5C       = "iPhone 5C",
        iPadMini1      = "iPad Mini 1",
        iPadMini2      = "iPad Mini 2",
        iPadMini3      = "iPad Mini 3",
        iPadAir1       = "iPad Air 1",
        iPadAir2       = "iPad Air 2",
        iPhone6        = "iPhone 6",
        iPhone6plus    = "iPhone 6 Plus",
        iPhone6S       = "iPhone 6S",
        iPhone6Splus   = "iPhone 6S Plus",
        Unrecognized   = "?unrecognized?"
    }
    
    extension UIDevice{
    
        public var deviceModel: DeviceModel{
            var systemInfo = utsname()
            uname(&systemInfo)
            let modelCode = withUnsafeMutablePointer(&systemInfo.machine) {
                ptr in String.fromCString(UnsafePointer<CChar>(ptr))
            }
            var modelMap : [ String : DeviceModel ] = [
                "i386"      : .Simulator,
                "x86_64"    : .Simulator,
                "iPod1,1"   : .iPod1,
                "iPod2,1"   : .iPod2,
                "iPod3,1"   : .iPod3,
                "iPod4,1"   : .iPod4,
                "iPod5,1"   : .iPod5,
                "iPad2,1"   : .iPad2,
                "iPad2,2"   : .iPad2,
                "iPad2,3"   : .iPad2,
                "iPad2,4"   : .iPad2,
                "iPad2,5"   : .iPadMini1,
                "iPad2,6"   : .iPadMini1,
                "iPad2,7"   : .iPadMini1,
                "iPhone3,1" : .iPhone4,
                "iPhone3,2" : .iPhone4,
                "iPhone3,3" : .iPhone4,
                "iPhone4,1" : .iPhone4S,
                "iPhone5,1" : .iPhone5,
                "iPhone5,2" : .iPhone5,
                "iPhone5,3" : .iPhone5C,
                "iPhone5,4" : .iPhone5C,
                "iPad3,1"   : .iPad3,
                "iPad3,2"   : .iPad3,
                "iPad3,3"   : .iPad3,
                "iPad3,4"   : .iPad4,
                "iPad3,5"   : .iPad4,
                "iPad3,6"   : .iPad4,
                "iPhone6,1" : .iPhone5S,
                "iPhone6,2" : .iPhone5S,
                "iPad4,1"   : .iPadAir1,
                "iPad4,2"   : .iPadAir2,
                "iPad4,4"   : .iPadMini2,
                "iPad4,5"   : .iPadMini2,
                "iPad4,6"   : .iPadMini2,
                "iPad4,7"   : .iPadMini3,
                "iPad4,8"   : .iPadMini3,
                "iPad4,9"   : .iPadMini3,
                "iPhone7,1" : .iPhone6plus,
                "iPhone7,2" : .iPhone6,
                "iPhone8,1" : .iPhone6S,
                "iPhone8,2" : .iPhone6Splus
            ]
            
            if let model = modelMap[String.fromCString(modelCode!)!] {
                return model
            }
            
            return DeviceModel.Unrecognized
        }
    }
    

      

    Objective-C Code:

    UIDevice+DeviceModel.h

    //
    //  UIDevice+DeviceModel.h
    //  TestDemo
    //
    //  Created by Fran on 15/12/29.
    //  Copyright © 2015年 Fran. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    extern NSString *const Device_Simulator;
    extern NSString *const Device_iPod1;
    extern NSString *const Device_iPod2;
    extern NSString *const Device_iPod3;
    extern NSString *const Device_iPod4;
    extern NSString *const Device_iPod5;
    extern NSString *const Device_iPad2;
    extern NSString *const Device_iPad3;
    extern NSString *const Device_iPad4;
    extern NSString *const Device_iPhone4;
    extern NSString *const Device_iPhone4S;
    extern NSString *const Device_iPhone5;
    extern NSString *const Device_iPhone5S;
    extern NSString *const Device_iPhone5C;
    extern NSString *const Device_iPadMini1;
    extern NSString *const Device_iPadMini2;
    extern NSString *const Device_iPadMini3;
    extern NSString *const Device_iPadAir1;
    extern NSString *const Device_iPadAir2;
    extern NSString *const Device_iPhone6;
    extern NSString *const Device_iPhone6plus;
    extern NSString *const Device_iPhone6S;
    extern NSString *const Device_iPhone6Splus;
    extern NSString *const Device_Unrecognized;
    
    @interface UIDevice (DeviceModel)
    
    -(NSString *) deviceModel;
    
    @end
    

      UIDevice+DeviceModel.m

    //
    //  UIDevice+DeviceModel.m
    //  TestDemo
    //
    //  Created by Fran on 15/12/29.
    //  Copyright © 2015年 Fran. All rights reserved.
    //
    
    #import "UIDevice+DeviceModel.h"
    #import <sys/utsname.h>
    
    NSString *const Device_Simulator = @"Simulator";
    NSString *const Device_iPod1 = @"iPod1";
    NSString *const Device_iPod2 = @"iPod2";
    NSString *const Device_iPod3 = @"iPod3";
    NSString *const Device_iPod4 = @"iPod4";
    NSString *const Device_iPod5 = @"iPod5";
    NSString *const Device_iPad2 = @"iPad2";
    NSString *const Device_iPad3 = @"iPad3";
    NSString *const Device_iPad4 = @"iPad4";
    NSString *const Device_iPhone4 = @"iPhone 4";
    NSString *const Device_iPhone4S = @"iPhone 4S";
    NSString *const Device_iPhone5 = @"iPhone 5";
    NSString *const Device_iPhone5S = @"iPhone 5S";
    NSString *const Device_iPhone5C = @"iPhone 5C";
    NSString *const Device_iPadMini1 = @"iPad Mini 1";
    NSString *const Device_iPadMini2 = @"iPad Mini 2";
    NSString *const Device_iPadMini3 = @"iPad Mini 3";
    NSString *const Device_iPadAir1 = @"iPad Air 1";
    NSString *const Device_iPadAir2 = @"iPad Mini 3";
    NSString *const Device_iPhone6 = @"iPhone 6";
    NSString *const Device_iPhone6plus = @"iPhone 6 Plus";
    NSString *const Device_iPhone6S = @"iPhone 6S";
    NSString *const Device_iPhone6Splus = @"iPhone 6S Plus";
    NSString *const Device_Unrecognized = @"?unrecognized?";
    
    @implementation UIDevice (DeviceModel)
    
    - (NSString *)deviceModel{
        
        struct utsname systemInfo;
        
        uname(&systemInfo);
        
        NSString* code = [NSString stringWithCString:systemInfo.machine
                                            encoding:NSUTF8StringEncoding];
        
        static NSDictionary* deviceNamesByCode = nil;
        
        if (!deviceNamesByCode) {
            
            deviceNamesByCode = @{
                                  @"i386"      : Device_Simulator,
                                  @"x86_64"    : Device_Simulator,
                                  @"iPod1,1"   : Device_iPod1,
                                  @"iPod2,1"   : Device_iPod2,
                                  @"iPod3,1"   : Device_iPod3,
                                  @"iPod4,1"   : Device_iPod4,
                                  @"iPod5,1"   : Device_iPod5,
                                  @"iPad2,1"   : Device_iPad2,
                                  @"iPad2,2"   : Device_iPad2,
                                  @"iPad2,3"   : Device_iPad2,
                                  @"iPad2,4"   : Device_iPad2,
                                  @"iPad2,5"   : Device_iPadMini1,
                                  @"iPad2,6"   : Device_iPadMini1,
                                  @"iPad2,7"   : Device_iPadMini1,
                                  @"iPhone3,1" : Device_iPhone4,
                                  @"iPhone3,2" : Device_iPhone4,
                                  @"iPhone3,3" : Device_iPhone4,
                                  @"iPhone4,1" : Device_iPhone4S,
                                  @"iPhone5,1" : Device_iPhone5,
                                  @"iPhone5,2" : Device_iPhone5,
                                  @"iPhone5,3" : Device_iPhone5C,
                                  @"iPhone5,4" : Device_iPhone5C,
                                  @"iPad3,1"   : Device_iPad3,
                                  @"iPad3,2"   : Device_iPad3,
                                  @"iPad3,3"   : Device_iPad3,
                                  @"iPad3,4"   : Device_iPad4,
                                  @"iPad3,5"   : Device_iPad4,
                                  @"iPad3,6"   : Device_iPad4,
                                  @"iPhone6,1" : Device_iPhone5S,
                                  @"iPhone6,2" : Device_iPhone5S,
                                  @"iPad4,1"   : Device_iPadAir1,
                                  @"iPad4,2"   : Device_iPadAir2,
                                  @"iPad4,4"   : Device_iPadMini2,
                                  @"iPad4,5"   : Device_iPadMini2,
                                  @"iPad4,6"   : Device_iPadMini2,
                                  @"iPad4,7"   : Device_iPadMini3,
                                  @"iPad4,8"   : Device_iPadMini3,
                                  @"iPad4,9"   : Device_iPadMini3,
                                  @"iPhone7,1" : Device_iPhone6plus,
                                  @"iPhone7,2" : Device_iPhone6,
                                  @"iPhone8,1" : Device_iPhone6S,
                                  @"iPhone8,2" : Device_iPhone6Splus
                                  };
        }
        
        NSString* deviceName = [deviceNamesByCode objectForKey:code];
        if(deviceName){
            return deviceName;
        }
        
        return Device_Unrecognized;
    }
    
    @end
    

      

  • 相关阅读:
    HI3518+RTSP(转)
    Linux常用命令英文全称与中文解释(转)
    旋转编码器正反转检测
    shell文件操作大全(转)
    makefile文件操作大全(转)
    Linux文件操作高频使用命令(转)
    浅谈linux中的根文件系统(转)
    分压电阻采样问题(转)
    python实现邮件发送
    50个很棒的Python模块
  • 原文地址:https://www.cnblogs.com/FranZhou/p/5085735.html
Copyright © 2011-2022 走看看