// // TVCUtils.m // TCLVBIMDemo // // Created by carolsuo on 2017/11/3. // Copyright © 2017年 tencent. All rights reserved. // #import "TVCUtils.h" #import #import #import #import #import #import #import #include #include #include #include static NSString * const kTVCPDDictionaryKey = @"com.tencent.liteavupload.uuidDictionaryKey"; static NSString * const kTVCPDKeyChainKey = @"com.tencent.liteavupload.uuidkeychainKey"; @implementation TVCUtils static NSString *tvc_systemBootTime(){ struct timeval boottime; size_t len = sizeof(boottime); int mib[2] = { CTL_KERN, KERN_BOOTTIME }; if( sysctl(mib, 2, &boottime, &len, NULL, 0) < 0 ) { return @""; } time_t bsec = boottime.tv_sec / 10000; NSString *bootTime = [NSString stringWithFormat:@"%ld",bsec]; return bootTime; } static NSString *tvc_countryCode() { NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode = [locale objectForKey:NSLocaleCountryCode]; return countryCode; } static NSString *tvc_language() { NSString *language; NSLocale *locale = [NSLocale currentLocale]; if ([[NSLocale preferredLanguages] count] > 0) { language = [[NSLocale preferredLanguages]objectAtIndex:0]; } else { language = [locale objectForKey:NSLocaleLanguageCode]; } return language; } static NSString *tvc_systemVersion() { return [[UIDevice currentDevice] systemVersion]; } static NSString *tvc_deviceName(){ return [[UIDevice currentDevice] name]; } static const char *tvc_SIDFAModel = "hw.model"; static const char *tvc_SIDFAMachine = "hw.machine"; static NSString *tvc_getSystemHardwareByName(const char *typeSpecifier) { size_t size; sysctlbyname(typeSpecifier, NULL, &size, NULL, 0); char *answer = malloc(size); sysctlbyname(typeSpecifier, answer, &size, NULL, 0); NSString *results = [NSString stringWithUTF8String:answer]; free(answer); return results; } static NSUInteger tvc_getSysInfo(uint typeSpecifier) { size_t size = sizeof(int); int results; int mib[2] = {CTL_HW, typeSpecifier}; sysctl(mib, 2, &results, &size, NULL, 0); return (NSUInteger) results; } static NSString *tvc_carrierInfo() { NSMutableString* cInfo = [NSMutableString string]; CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [networkInfo subscriberCellularProvider]; NSString *carrierName = [carrier carrierName]; if (carrierName != nil){ [cInfo appendString:carrierName]; } NSString *mcc = [carrier mobileCountryCode]; if (mcc != nil){ [cInfo appendString:mcc]; } NSString *mnc = [carrier mobileNetworkCode]; if (mnc != nil){ [cInfo appendString:mnc]; } return cInfo; } static NSString *tvc_systemHardwareInfo(){ NSString *model = tvc_getSystemHardwareByName(tvc_SIDFAModel); NSString *machine = tvc_getSystemHardwareByName(tvc_SIDFAMachine); NSString *carInfo = tvc_carrierInfo(); NSUInteger totalMemory = tvc_getSysInfo(HW_PHYSMEM); return [NSString stringWithFormat:@"%@,%@,%@,%td",model,machine,carInfo,totalMemory]; } static NSString *tvc_systemFileTime(){ NSFileManager *file = [NSFileManager defaultManager]; NSDictionary *dic= [file attributesOfItemAtPath:@"System/Library/CoreServices" error:nil]; return [NSString stringWithFormat:@"%@,%@",[dic objectForKey:NSFileCreationDate],[dic objectForKey:NSFileModificationDate]]; } static NSString *tvc_disk(){ NSDictionary *fattributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil]; NSString *diskSize = [[fattributes objectForKey:NSFileSystemSize] stringValue]; return diskSize; } static void tvc_MD5_16(NSString *source, unsigned char *ret){ const char* str = [source UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(str, (CC_LONG)strlen(str), result); for(int i = 4; i < CC_MD5_DIGEST_LENGTH - 4; i++) { ret[i-4] = result[i]; } } static NSString *tvc_combineTwoFingerPrint(unsigned char *fp1,unsigned char *fp2){ NSMutableString *hash = [NSMutableString stringWithCapacity:36]; for(int i = 0; i= 7.0) { CTTelephonyNetworkInfo * info = [[CTTelephonyNetworkInfo alloc] init]; NSString *currentRadioAccessTechnology = info.currentRadioAccessTechnology; if (currentRadioAccessTechnology) { if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) { NetworkType = 2; // 4G } else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] || [currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) { NetworkType = 4; // 2G } else { NetworkType = 3; // 3G } } } else { if((flags & kSCNetworkReachabilityFlagsReachable) == kSCNetworkReachabilityFlagsReachable) { if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection) { if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired) { NetworkType = 4; // 2G } else { NetworkType = 3; // 3G } } } } } return NetworkType; } + (NSString *)tvc_deviceModelName { struct utsname systemInfo; uname(&systemInfo); NSString *deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; //iPhone 系列 if ([deviceModel isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; if ([deviceModel isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; if ([deviceModel isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; if ([deviceModel isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; if ([deviceModel isEqualToString:@"iPhone3,2"]) return @"Verizon iPhone 4"; if ([deviceModel isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; if ([deviceModel isEqualToString:@"iPhone5,1"]) return @"iPhone 5"; if ([deviceModel isEqualToString:@"iPhone5,2"]) return @"iPhone 5"; if ([deviceModel isEqualToString:@"iPhone5,3"]) return @"iPhone 5C"; if ([deviceModel isEqualToString:@"iPhone5,4"]) return @"iPhone 5C"; if ([deviceModel isEqualToString:@"iPhone6,1"]) return @"iPhone 5S"; if ([deviceModel isEqualToString:@"iPhone6,2"]) return @"iPhone 5S"; if ([deviceModel isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus"; if ([deviceModel isEqualToString:@"iPhone7,2"]) return @"iPhone 6"; if ([deviceModel isEqualToString:@"iPhone8,1"]) return @"iPhone 6s"; if ([deviceModel isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus"; if ([deviceModel isEqualToString:@"iPhone9,1"]) return @"iPhone 7 (CDMA)"; if ([deviceModel isEqualToString:@"iPhone9,3"]) return @"iPhone 7 (GSM)"; if ([deviceModel isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus (CDMA)"; if ([deviceModel isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus (GSM)"; //iPod 系列 if ([deviceModel isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G"; if ([deviceModel isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G"; if ([deviceModel isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G"; if ([deviceModel isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G"; if ([deviceModel isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G"; //iPad 系列 if ([deviceModel isEqualToString:@"iPad1,1"]) return @"iPad"; if ([deviceModel isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)"; if ([deviceModel isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)"; if ([deviceModel isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)"; if ([deviceModel isEqualToString:@"iPad2,4"]) return @"iPad 2 (32nm)"; if ([deviceModel isEqualToString:@"iPad2,5"]) return @"iPad mini (WiFi)"; if ([deviceModel isEqualToString:@"iPad2,6"]) return @"iPad mini (GSM)"; if ([deviceModel isEqualToString:@"iPad2,7"]) return @"iPad mini (CDMA)"; if ([deviceModel isEqualToString:@"iPad3,1"]) return @"iPad 3(WiFi)"; if ([deviceModel isEqualToString:@"iPad3,2"]) return @"iPad 3(CDMA)"; if ([deviceModel isEqualToString:@"iPad3,3"]) return @"iPad 3(4G)"; if ([deviceModel isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)"; if ([deviceModel isEqualToString:@"iPad3,5"]) return @"iPad 4 (4G)"; if ([deviceModel isEqualToString:@"iPad3,6"]) return @"iPad 4 (CDMA)"; if ([deviceModel isEqualToString:@"iPad4,1"]) return @"iPad Air"; if ([deviceModel isEqualToString:@"iPad4,2"]) return @"iPad Air"; if ([deviceModel isEqualToString:@"iPad4,3"]) return @"iPad Air"; if ([deviceModel isEqualToString:@"iPad5,3"]) return @"iPad Air 2"; if ([deviceModel isEqualToString:@"iPad5,4"]) return @"iPad Air 2"; if ([deviceModel isEqualToString:@"i386"]) return @"Simulator"; if ([deviceModel isEqualToString:@"x86_64"]) return @"Simulator"; if ([deviceModel isEqualToString:@"iPad4,4"] ||[deviceModel isEqualToString:@"iPad4,5"] ||[deviceModel isEqualToString:@"iPad4,6"]) return @"iPad mini 2"; if ([deviceModel isEqualToString:@"iPad4,7"] ||[deviceModel isEqualToString:@"iPad4,8"] ||[deviceModel isEqualToString:@"iPad4,9"]) return @"iPad mini 3"; return deviceModel; } @end