日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS: iOS各种设备信息获取

發布時間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS: iOS各种设备信息获取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Author:si1ence

Link:http://www.jianshu.com/p/b23016bb97af

為了統計用戶信息、下發廣告,服務器端往往需要手機用戶設備及app的各種信息,下面講述一下各種信息的獲取方式:

?

點擊下載以上展示效果的GitHub源碼

  • 一行代碼就搞定的統一來!
// 這個方法后面會列出來NSString *deviceName = [self getDeviceName];NSLog(@"設備型號-->%@", deviceName);NSString *iPhoneName = [UIDevice currentDevice].name;NSLog(@"iPhone名稱-->%@", iPhoneName); NSString *appVerion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];NSLog(@"app版本號-->%@", appVerion);CGFloat batteryLevel = [[UIDevice currentDevice] batteryLevel];NSLog(@"電池電量-->%f", batteryLevel);NSString *localizedModel = [UIDevice currentDevice].localizedModel;NSLog(@"localizedModel-->%@", localizedModel);NSString *systemName = [UIDevice currentDevice].systemName;NSLog(@"當前系統名稱-->%@", systemName);NSString *systemVersion = [UIDevice currentDevice].systemVersion;NSLog(@"當前系統版本號-->%@", systemVersion);struct utsname systemInfo;uname(&systemInfo);NSString *device_model = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];NSLog(@"device_model-->%@", device_model);// 這個方法后面會單獨列出NSString *macAddress = [self getMacAddress];NSLog(@"macAddress-->%@", macAddress);// 這個方法后面會單獨列出NSString *deviceIP = [self getDeviceIPAddresses];NSLog(@"deviceIP-->%@", deviceIP);
  • 廣告位標識符:在同一個設備上的所有App都會取到相同的值,是蘋果專門給各廣告提供商用來追蹤用戶而設的,用戶可以在 設置|隱私|廣告追蹤里重置此id的值,或限制此id的使用,故此id有可能會取不到值,但好在Apple默認是允許追蹤的,而且一般用戶都不知道有這么個設置,所以基本上用來監測推廣效果
//廣告標識 NSString *idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];NSLog(@"廣告位標識符idfa-->%@", idfa);
  • UUID是Universally Unique Identifier的縮寫,中文意思是通用唯一識別碼。它是讓分布式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指 定。這樣,每個人都可以建立不與其它人沖突的 UUID。在此情況下,就不需考慮數據庫建立時的名稱重復問題。蘋果公司建議使用UUID為應用生成唯一標識字符串。
//UUIDNSString *uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];NSLog(@"唯一識別碼uuid-->%@", uuid);
  • 獲取設備型號

// 獲取設備型號然后手動轉化為對應名稱 - (NSString *)getDeviceName {// 需要#import "sys/utsname.h"#warning 題主嘔心瀝血總結!!最全面!親測!全網獨此一份!!struct utsname systemInfo;uname(&systemInfo);NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];if ([deviceString isEqualToString:@"iPhone3,1"]) return @"iPhone 4";if ([deviceString isEqualToString:@"iPhone3,2"]) return @"iPhone 4";if ([deviceString isEqualToString:@"iPhone3,3"]) return @"iPhone 4";if ([deviceString isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";if ([deviceString isEqualToString:@"iPhone5,1"]) return @"iPhone 5";if ([deviceString isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";if ([deviceString isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)";if ([deviceString isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (GSM+CDMA)";if ([deviceString isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)";if ([deviceString isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (GSM+CDMA)";if ([deviceString isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";if ([deviceString isEqualToString:@"iPhone7,2"]) return @"iPhone 6";if ([deviceString isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";if ([deviceString isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";if ([deviceString isEqualToString:@"iPhone8,4"]) return @"iPhone SE";if ([deviceString isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";if ([deviceString isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";if ([deviceString isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";if ([deviceString isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";if ([deviceString isEqualToString:@"iPod5,1"]) return @"iPod Touch (5 Gen)";if ([deviceString isEqualToString:@"iPad1,1"]) return @"iPad";if ([deviceString isEqualToString:@"iPad1,2"]) return @"iPad 3G";if ([deviceString isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";if ([deviceString isEqualToString:@"iPad2,2"]) return @"iPad 2";if ([deviceString isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";if ([deviceString isEqualToString:@"iPad2,4"]) return @"iPad 2";if ([deviceString isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";if ([deviceString isEqualToString:@"iPad2,6"]) return @"iPad Mini";if ([deviceString isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)";if ([deviceString isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)";if ([deviceString isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)";if ([deviceString isEqualToString:@"iPad3,3"]) return @"iPad 3";if ([deviceString isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";if ([deviceString isEqualToString:@"iPad3,5"]) return @"iPad 4";if ([deviceString isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)";if ([deviceString isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)";if ([deviceString isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)";if ([deviceString isEqualToString:@"iPad4,4"]) return @"iPad Mini 2 (WiFi)";if ([deviceString isEqualToString:@"iPad4,5"]) return @"iPad Mini 2 (Cellular)";if ([deviceString isEqualToString:@"iPad4,6"]) return @"iPad Mini 2";if ([deviceString isEqualToString:@"iPad4,7"]) return @"iPad Mini 3";if ([deviceString isEqualToString:@"iPad4,8"]) return @"iPad Mini 3";if ([deviceString isEqualToString:@"iPad4,9"]) return @"iPad Mini 3";if ([deviceString isEqualToString:@"iPad5,1"]) return @"iPad Mini 4 (WiFi)";if ([deviceString isEqualToString:@"iPad5,2"]) return @"iPad Mini 4 (LTE)";if ([deviceString isEqualToString:@"iPad5,3"]) return @"iPad Air 2";if ([deviceString isEqualToString:@"iPad5,4"]) return @"iPad Air 2";if ([deviceString isEqualToString:@"iPad6,3"]) return @"iPad Pro 9.7";if ([deviceString isEqualToString:@"iPad6,4"]) return @"iPad Pro 9.7";if ([deviceString isEqualToString:@"iPad6,7"]) return @"iPad Pro 12.9";if ([deviceString isEqualToString:@"iPad6,8"]) return @"iPad Pro 12.9";if ([deviceString isEqualToString:@"i386"]) return @"Simulator";if ([deviceString isEqualToString:@"x86_64"]) return @"Simulator";return deviceString; }
  • mac 地址
- (NSString *)getMacAddress {int mib[6];size_t len;char *buf;unsigned char *ptr;struct if_msghdr *ifm;struct sockaddr_dl *sdl;mib[0] = CTL_NET;mib[1] = AF_ROUTE;mib[2] = 0;mib[3] = AF_LINK;mib[4] = NET_RT_IFLIST;if ((mib[5] = if_nametoindex("en0")) == 0) {printf("Error: if_nametoindex error/n");return NULL;}if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {printf("Error: sysctl, take 1/n");return NULL;}if ((buf = malloc(len)) == NULL) {printf("Could not allocate memory. error!/n");return NULL;}if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {printf("Error: sysctl, take 2");return NULL;}ifm = (struct if_msghdr *)buf;sdl = (struct sockaddr_dl *)(ifm + 1);ptr = (unsigned char *)LLADDR(sdl);NSString *outstring = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];free(buf);return [outstring uppercaseString]; }
  • IP地址
- (NSString *)getDeviceIPAddresses {int sockfd = socket(AF_INET, SOCK_DGRAM, 0);NSMutableArray *ips = [NSMutableArray array];int BUFFERSIZE = 4096;struct ifconf ifc;char buffer[BUFFERSIZE], *ptr, lastname[IFNAMSIZ], *cptr;struct ifreq *ifr, ifrcopy;ifc.ifc_len = BUFFERSIZE;ifc.ifc_buf = buffer;if (ioctl(sockfd, SIOCGIFCONF, &ifc) >= 0){for (ptr = buffer; ptr < buffer + ifc.ifc_len; ){ifr = (struct ifreq *)ptr;int len = sizeof(struct sockaddr);if (ifr->ifr_addr.sa_len > len) {len = ifr->ifr_addr.sa_len;}ptr += sizeof(ifr->ifr_name) + len;if (ifr->ifr_addr.sa_family != AF_INET) continue;if ((cptr = (char *)strchr(ifr->ifr_name, ':')) != NULL) *cptr = 0;if (strncmp(lastname, ifr->ifr_name, IFNAMSIZ) == 0) continue;memcpy(lastname, ifr->ifr_name, IFNAMSIZ);ifrcopy = *ifr;ioctl(sockfd, SIOCGIFFLAGS, &ifrcopy);if ((ifrcopy.ifr_flags & IFF_UP) == 0) continue;NSString *ip = [NSString stringWithFormat:@"%s", inet_ntoa(((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr)];[ips addObject:ip];}}close(sockfd);NSString *deviceIP = @"";for (int i=0; i < ips.count; i++) {if (ips.count > 0) {deviceIP = [NSString stringWithFormat:@"%@",ips.lastObject];}}return deviceIP; }

?



轉載于:https://www.cnblogs.com/XYQ-208910/p/5672577.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的iOS: iOS各种设备信息获取的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。