美文网首页
iOS 07、iOS中的UIDevice的分类方法-快速获取设备

iOS 07、iOS中的UIDevice的分类方法-快速获取设备

作者: echo海猫 | 来源:发表于2018-03-02 14:55 被阅读154次

    iOS的分类方法,简言其作用为拓展类方法,增加类的多样性和功能性
    1、建立UIDevice的分类方法,本例采用的是命名为WYGDeviceInfo生成UIDevice+WYGDeviceInfo的声明文件和实现文件
    2、在UIDevice+WYGDeviceInfo.h的文件中,声明7个实例方法提供给UIDevice使用,分别为:

    //iOS限制:无法获取设备的UDID和MAC地址
    
    /**
     获取当前硬件体系类型
     */
    -(NSString *)deviceName;
    
    /**
     获取当前操作系统名
     */
    -(NSString *)sysnameName;
    
    /**
     获取网络上的名称
     */
    -(NSString *)nodenameName;
    
    /**
     获取当前发布级别
     */
    -(NSString *)releaseName;
    
    /**
     获取当前发布版本
     */
    -(NSString *)versionName;
    
    /**
     获取手机型号
     */
    - (NSString*)iphoneType;
    
    /**
     获取UUID:通用唯一标识符;32位的十六进制序列:8-4-4-4-12
     */
    - (NSString *)deviceUniqueIdentifier;
    

    3、实现文件:

    //先引用#import <sys/utsname.h>
    //uname系统调用:获取当前内核名称和其它信息  参数__name:指向存放系统信息的缓冲区
    -(NSString *)deviceName{
        struct utsname u;
        uname(&u);
        return [NSString stringWithCString:u.machine encoding:NSUTF8StringEncoding];
    }
    
    -(NSString *)sysnameName{
        struct utsname u;
        uname(&u);
        return [NSString stringWithCString:u.sysname encoding:NSUTF8StringEncoding];
    }
    
    -(NSString *)nodenameName{
        struct utsname u;
        uname(&u);
        return [NSString stringWithCString:u.nodename encoding:NSUTF8StringEncoding];
    }
    
    -(NSString *)releaseName{
        struct utsname u;
        uname(&u);
        return [NSString stringWithCString:u.release encoding:NSUTF8StringEncoding];
    }
    
    -(NSString *)versionName{
        struct utsname u;
        uname(&u);
        return [NSString stringWithCString:u.version encoding:NSUTF8StringEncoding];
    }
    
    - (NSString*)iphoneType {
        //需要导入头文件:#import <sys/utsname.h>
        
        struct utsname systemInfo;
        
        uname(&systemInfo);
        
        NSString*platform = [NSString stringWithCString: systemInfo.machine encoding:NSASCIIStringEncoding];
        
        if([platform isEqualToString:@"iPhone1,1"])
            return @"iPhone 2G";
        
        if([platform isEqualToString:@"iPhone1,2"])
            return @"iPhone 3G";
        
        if([platform isEqualToString:@"iPhone2,1"])
            return @"iPhone 3GS";
        
        if([platform isEqualToString:@"iPhone3,1"])
            return @"iPhone 4";
        
        if([platform isEqualToString:@"iPhone3,2"])
            return @"iPhone 4";
        
        if([platform isEqualToString:@"iPhone3,3"])
            return @"iPhone 4";
        
        if([platform isEqualToString:@"iPhone4,1"])
            return @"iPhone 4S";
        
        if([platform isEqualToString:@"iPhone5,1"])
            return @"iPhone 5";
        
        if([platform isEqualToString:@"iPhone5,2"])
            return @"iPhone 5";
        
        if([platform isEqualToString:@"iPhone5,3"])
            return @"iPhone 5c";
        
        if([platform isEqualToString:@"iPhone5,4"])
            return @"iPhone 5c";
        
        if([platform isEqualToString:@"iPhone6,1"])
            return @"iPhone 5s";
        
        if([platform isEqualToString:@"iPhone6,2"])
            return @"iPhone 5s";
        
        if([platform isEqualToString:@"iPhone7,1"])
            return @"iPhone 6 Plus";
        
        if([platform isEqualToString:@"iPhone7,2"])
            return @"iPhone 6";
        
        if([platform isEqualToString:@"iPhone8,1"])
            return @"iPhone 6s";
        
        if([platform isEqualToString:@"iPhone8,2"])
            return @"iPhone 6s Plus";
        
        if([platform isEqualToString:@"iPhone8,4"])
            return @"iPhone SE";
        
        if([platform isEqualToString:@"iPhone9,1"])
            return @"iPhone 7";
        
        if([platform isEqualToString:@"iPhone9,3"])
            return @"iPhone 7";
        
        if([platform isEqualToString:@"iPhone9,4"])
            return @"iPhone 7 Plus";
        
        if([platform isEqualToString:@"iPhone9,2"])
            return @"iPhone 7 Plus";
        
        if([platform isEqualToString:@"iPhone10,1"])
            return @"iPhone 8";
        
        if([platform isEqualToString:@"iPhone10,4"])
            return @"iPhone 8";
        
        if([platform isEqualToString:@"iPhone10,2"])
            return @"iPhone 8 Plus";
        
        if([platform isEqualToString:@"iPhone10,5"])
            return @"iPhone 8 Plus";
        
        if([platform isEqualToString:@"iPhone10,3"])
            return @"iPhone X";
        
        if([platform isEqualToString:@"iPhone10,6"])
            return @"iPhone X";
        
        if([platform isEqualToString:@"iPod1,1"])
            return @"iPod Touch 1G";
        
        if([platform isEqualToString:@"iPod2,1"])
            return @"iPod Touch 2G";
        
        if([platform isEqualToString:@"iPod3,1"])
            return @"iPod Touch 3G";
        
        if([platform isEqualToString:@"iPod4,1"])
            return @"iPod Touch 4G";
        
        if([platform isEqualToString:@"iPod5,1"])
            return @"iPod Touch 5G";
        
        if([platform isEqualToString:@"iPad1,1"])
            return @"iPad 1G";
        
        if([platform isEqualToString:@"iPad2,1"])
            return @"iPad 2";
        
        if([platform isEqualToString:@"iPad2,2"])
            return @"iPad 2";
        
        if([platform isEqualToString:@"iPad2,3"])
            return @"iPad 2";
        
        if([platform isEqualToString:@"iPad2,4"])
            return @"iPad 2";
        
        if([platform isEqualToString:@"iPad2,5"])
            return @"iPad Mini 1G";
        
        if([platform isEqualToString:@"iPad2,6"])
            return @"iPad Mini 1G";
        
        if([platform isEqualToString:@"iPad2,7"])
            return @"iPad Mini 1G";
        
        if([platform isEqualToString:@"iPad3,1"])
            return @"iPad 3";
        
        if([platform isEqualToString:@"iPad3,2"])
            return @"iPad 3";
        
        if([platform isEqualToString:@"iPad3,3"])
            return @"iPad 3";
        
        if([platform isEqualToString:@"iPad3,4"])
            return @"iPad 4";
        
        if([platform isEqualToString:@"iPad3,5"])
            return @"iPad 4";
        
        if([platform isEqualToString:@"iPad3,6"])
            return @"iPad 4";
        
        if([platform isEqualToString:@"iPad4,1"])
            return @"iPad Air";
        
        if([platform isEqualToString:@"iPad4,2"])
            return @"iPad Air";
        
        if([platform isEqualToString:@"iPad4,3"])
            return @"iPad Air";
        
        if([platform isEqualToString:@"iPad4,4"])
            return @"iPad Mini 2G";
        
        if([platform isEqualToString:@"iPad4,5"])
            return @"iPad Mini 2G";
        
        if([platform isEqualToString:@"iPad4,6"])
            return @"iPad Mini 2G";
        
        if([platform isEqualToString:@"iPad4,7"])
            return @"iPad Mini 3";
        
        if([platform isEqualToString:@"iPad4,8"])
            return @"iPad Mini 3";
        
        if([platform isEqualToString:@"iPad4,9"])
            return @"iPad Mini 3";
        
        if([platform isEqualToString:@"iPad5,1"])
            return @"iPad Mini 4";
        
        if([platform isEqualToString:@"iPad5,2"])
            return @"iPad Mini 4";
        
        if([platform isEqualToString:@"iPad5,3"])
            return @"iPad Air 2";
        
        if([platform isEqualToString:@"iPad5,4"])
            return @"iPad Air 2";
        
        if([platform isEqualToString:@"iPad6,3"])
            return @"iPad Pro 9.7";
        
        if([platform isEqualToString:@"iPad6,4"])
            return @"iPad Pro 9.7";
        
        if([platform isEqualToString:@"iPad6,7"])
            return @"iPad Pro 12.9";
        
        if([platform isEqualToString:@"iPad6,8"])
            return @"iPad Pro 12.9";
        
        if([platform isEqualToString:@"i386"])
            return @"iPhone Simulator";
        
        if([platform isEqualToString:@"x86_64"])
            return @"iPhone Simulator";
        
        return platform;
    }
    
    - (NSString *)deviceUniqueIdentifier{
        
        NSMutableString *UUIDstring = [[[self identifierForVendor] UUIDString] mutableCopy];
        return UUIDstring;
    }
    

    4、调用方法:导入头文件,然后直接用UIDevice的快速方法currentDevice进行实例消息的发送和调用
    譬如:

    [UIDevice currentDevice] deviceName] 或者 [UIDevice currentDevice].deviceName]
    

    demo地址:https://github.com/YGEqual/GetDeviceInfoDemo

    相关文章

      网友评论

          本文标题:iOS 07、iOS中的UIDevice的分类方法-快速获取设备

          本文链接:https://www.haomeiwen.com/subject/yseaxftx.html