iOS获取当前设备的型号、分辨率、运营商以及地理位置
2017-03-21 18:19
507 查看
最近做一个需求:后端需要统计使用我们APP产品的用户手机的各种信息,这些信息包括:设备品牌、设备型号、设备分辨率、操作系统、运营商、APP版本号、设备ID(UUID)、地址位置。这些信息其实获取也都不是很难,简单记录一下:
获取设备型号的方法:
定位相关的实现:使用CLLocationManager和CLLocation两个类
//首先获取当前设备对象 UIDevice *device = [UIDevice currentDevice]; /* 系统名 */ NSString *systemName = [device systemName]; /* 系统版本号 */ NSString *phoneVersion = [device systemVersion]; /* 设备品牌 */ NSString *brand = [device model]; /* 设备型号 */ iphoneType方法在后面实现 NSString *model = [self iphoneType]; /* 分辨率 */ CGRect rect = [UIScreen mainScreen].bounds; CGSize size = rect.size; CGFloat scale = [UIScreen mainScreen].scale; CGFloat width = size.width*scale; CGFloat height = size.height*scale; /* 运营商 */ 首先需要引入以下两个系统类: #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <CoreTelephony/CTCarrier.h> CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [info subscriberCellularProvider]; //当前手机所属运营商名称 NSString *mobileCarrier; //先判断有没有SIM卡,如果没有则不获取本机运营商 if (!carrier.isoCountryCode) { mobileCarrier = @"无运营商"; }else{ mobileCarrier = [carrier carrierName]; } /* app当前版本号 */ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; NSString *currentVersion = infoDict[@"CFBundleShortVersionString"]; /* 设备ID */ NSUUID *uuid = device.identifierForVendor; NSString *devideID = uuid.UUIDString; /* 地理位置 */ [self Collocaction];
获取设备型号的方法:
- (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,2"]) return @"iPhone 7 Plus"; return platform; }
定位相关的实现:使用CLLocationManager和CLLocation两个类
-(void)Collocaction{ self.locationManager = [[CLLocationManager alloc] init]; [self.locationManager requestAlwaysAuthorization];//请求授权 if ([CLLocationManager locationServicesEnabled]) { self.locationManager.delegate = self; self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; self.locationManager.distanceFilter = 200.0f; [self.locationManager startUpdatingLocation]; } else { NSLog(@"请开启定位功能!"); } } //定位代理方法 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { // 获取当前所在的城市名 CLGeocoder *geocoder = [[CLGeocoder alloc] init]; //根据经纬度反向地理编译出地址信息 [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *array, NSError *error) { if (array.count > 0) { CLPlacemark *placemark = [array objectAtIndex:0]; //获取城市 NSString *city = placemark.locality; if (!city) { //四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市) city = placemark.administrativeArea; } //详细地址 NSString *location = placemark.name; //拼接成最终的位置 NSString *myLocation = [NSString stringWithFormat:@"%@%@",city,location]; } else if (error == nil && [array count] == 0) { NSLog(@"No results were returned."); } else if (error != nil) { NSLog(@"An error occurred = %@", error); } }]; //停止定位 [manager stopUpdatingLocation]; } // 定位失误时调用 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"error:%@",error); }
相关文章推荐
- IOS模拟器能获取运营商信息,网络连接类型以及地理位置吗?
- IOS模拟器能获取运营商信息,网络连接类型以及地理位置吗?
- ios获取手机型号、系统版本、设备唯一标识符、手机运营商等
- iOS 获取当前设备型号iPhone7/iPhone7P
- iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试
- iOS 获取当前应用的信息以及用户信息:版本号手机号手机型号
- 获取当前IOS设备的CPU型号,CPU核数,GPU,GPU核数,屏幕分辨率,屏幕尺寸,PPI等信息
- iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试
- 获取当前IOS设备的CPU型号,CPU核数,GPU,GPU核数,屏幕分辨率,屏幕尺寸,PPI等信息
- iOS 之获取设备所剩内存 以及 当前应用所占内存
- iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P
- iOS 百度地图获取当前地理位置
- IOS获取当前地理位置文本
- 获取iOS设备信息(内存/电量/容量/型号/IP地址/当前WIFI名称)
- 获取iOS设备信息(内存/电量/容量/型号/IP地址/当前WIFI名称)
- IOS获取当前地理位置文本
- iOS 获取当前设备具体型号(当前支持到iPhone7/iPhone7P )、系统版本、电量、序列号、设备名称、应用相关信息获取等
- IOS获取当前地理位置文本
- iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试
- iOS 获取当前地理位置文本