《iOS开发常用的一些与设备相关的基础API》
#import "HIHIDeviceTool.h"
#import <sys/utsname.h> // 获取手机类型需要用到的头文件
#import // 获取设备运营商用到的类
#import // 获取设备运营商用到的类
#import // 获取设备运营商用到的类
#import "Reachability.h" // 苹果官方提供的网络监测类
@interface HIHIDeviceTool ()
@end
@implementation HIHIDeviceTool
/**
手机类型
@return iPhone X
*/
+(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"] || [platform isEqualToString:@"iPhone3,2"] || [platform isEqualToString:@"iPhone3,3"] ) {
return @"iphone 4";
}
if([platform isEqualToString:@"iPhone4,1"]) {
return @"iphone 4S";
}
if([platform isEqualToString:@"iPhone5,1"] || [platform isEqualToString:@"iPhone5,2"]) {
return @"iphone 5";
}
if([platform isEqualToString:@"iPhone5,3"] || [platform isEqualToString:@"iPhone5,4"]) {
return @"iphone 5C";
}
if([platform isEqualToString:@"iPhone6,1"] || [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([platformisEqualToString:@"iPhone9,2"] ) {
return @"iphone 7 Plus";
}
if([platform isEqualToString:@"iPhone10,1"] || [platform isEqualToString:@"iPhone10,4"]) {
return @"iphone 8";
}
if([platform isEqualToString:@"iPhone10,2"] || [platform isEqualToString:@"iPhone10,5"]) {
return @"iphone 8 Plus";
}
if([platform isEqualToString:@"iPhone10,3"] || [platform isEqualToString:@"iPhone10,6"]) {
return @"iphone X";
}
returnplatform;
}
/**
手机系统版本
@return ios 11.1
*/
+(NSString*)phoneVersionAndOS{
NSString *OS = [[UIDevice currentDevice] systemName];
NSString *phoneversion = [[UIDevice currentDevice] systemVersion];
return[NSStringstringWithFormat:@"%@ %@",OS,phoneversion];
}
/**
APP版本号
@return 版本号
*/
+(NSString*)appVersion{
return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
}
/**
设备ID
@return NSUUID
*/
+(NSString*)DeviceID{
return [NSString stringWithFormat:@"%@",[[UIDevice currentDevice] identifierForVendor]];
}
/**
设备运营商信息
@return 中国——移动
*/
+(NSString*)carrieroperator{
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [info subscriberCellularProvider];
//当前手机所属运营商名称
NSString*mobileCarrier;
//先判断有没有SIM卡,如果没有则不获取本机运营商
if(!carrier.isoCountryCode) {
mobileCarrier =@"无运营商";
}else{
mobileCarrier = [carriercarrierName];
}
if([mobileCarrierisEqualToString:@"无运营商"]) {
return@"0";
}elseif([mobileCarriercontainsString:@"移动"]){
return@"1";
}elseif([mobileCarriercontainsString:@"联通"]){
return@"2";
}elseif([mobileCarriercontainsString:@"电信"]){
return@"3";
}else{
return@"0";
}
}
+(NSString*)deveiceSoultion{
CGRect rect = [UIScreen mainScreen].bounds;
CGSizesize = rect.size;
CGFloat scale = [UIScreen mainScreen].scale;
CGFloatwidth = size.width*scale;
CGFloatheight = size.height*scale;
return [NSString stringWithFormat:@"%.f * %.f",width,height];
}
+(NSString*)currentNetWorkState{
Reachability*reachability = [Reachability reachabilityWithHostName:@"www.apple.com"];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
NSString*net =@"WIFI";
switch(internetStatus) {
case ReachableViaWiFi:
net =@"wifi";
break;
case ReachableViaWWAN:
net = [[selfclass]getNetType]; //判断具体类型
break;
case NotReachable:
net =@"无网络";
default:
break;
}
if([netisEqualToString:@"无网络"]) {// 无网络
return@"0";
}elseif([netisEqualToString:@"wifi"]){// Wi-Fi
return@"1";
}elseif([netisEqualToString:@"2G"]){ // 2G
return@"2";
}elseif([netisEqualToString:@"3G"]){ // 3G
return@"3";
}elseif([netisEqualToString:@"4G"]){ // 4G
return@"4";
}else{ // 手机自带其他网络
return@"5";
}
}
+ (NSString*)getNetType
{
NSString*netconnType =@"";
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
NSString *currentStatus = info.currentRadioAccessTechnology;
if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyGPRS"]) {
netconnType =@"GPRS";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyEdge"]) {
netconnType =@"2.75G EDGE";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyWCDMA"]){
netconnType =@"3G";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyHSDPA"]){
netconnType =@"3.5G HSDPA";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyHSUPA"]){
netconnType =@"3.5G HSUPA";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMA1x"]){
netconnType =@"2G";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORev0"]){
netconnType =@"3G";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORevA"]){
netconnType =@"3G";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORevB"]){
netconnType =@"3G";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyeHRPD"]){
netconnType =@"HRPD";
}else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyLTE"]){
netconnType =@"4G";
}
returnnetconnType;
}
网友评论