美文网首页
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