获取系统版本
+ (NSString *)getCurrentSystemVersion
{
return [[UIDevice currentDevice] systemVersion];
}
获取手机model
+ (NSString *)getCurrentDevicePhoneModel{
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
if ([deviceModel isEqualToString:@"iPhone3,1"]) return @"iPhone4";
if ([deviceModel isEqualToString:@"iPhone3,2"]) return @"iPhone4";
if ([deviceModel isEqualToString:@"iPhone3,3"]) return @"iPhone4";
if ([deviceModel isEqualToString:@"iPhone4,1"]) return @"iPhone4S";
if ([deviceModel isEqualToString:@"iPhone5,1"]) return @"iPhone5";
if ([deviceModel isEqualToString:@"iPhone5,2"]) return @"iPhone5(GSM+CDMA)";
if ([deviceModel isEqualToString:@"iPhone5,3"]) return @"iPhone5c(GSM)";
if ([deviceModel isEqualToString:@"iPhone5,4"]) return @"iPhone5c(GSM+CDMA)";
if ([deviceModel isEqualToString:@"iPhone6,1"]) return @"iPhone5s(GSM)";
if ([deviceModel isEqualToString:@"iPhone6,2"]) return @"iPhone5s(GSM+CDMA)";
if ([deviceModel isEqualToString:@"iPhone7,1"]) return @"iPhone6Plus";
if ([deviceModel isEqualToString:@"iPhone7,2"]) return @"iPhone6";
if ([deviceModel isEqualToString:@"iPhone8,1"]) return @"iPhone6s";
if ([deviceModel isEqualToString:@"iPhone8,2"]) return @"iPhone6sPlus";
if ([deviceModel isEqualToString:@"iPhone8,4"]) return @"iPhoneSE";
// 日行两款手机型号均为日本独占,可能使用索尼FeliCa支付方案而不是苹果支
if ([deviceModel isEqualToString:@"iPhone9,1"]) return @"iPhone7";
if ([deviceModel isEqualToString:@"iPhone9,2"]) return @"iPhone7Plus";
if ([deviceModel isEqualToString:@"iPhone9,3"]) return @"iPhone7";
if ([deviceModel isEqualToString:@"iPhone9,4"]) return @"iPhone7Plus";
if ([deviceModel isEqualToString:@"iPhone10,1"]) return @"iPhone8";
if ([deviceModel isEqualToString:@"iPhone10,4"]) return @"iPhone8";
if ([deviceModel isEqualToString:@"iPhone10,2"]) return @"iPhone8Plus";
if ([deviceModel isEqualToString:@"iPhone10,5"]) return @"iPhone8Plus";
if ([deviceModel isEqualToString:@"iPhone10,3"]) return @"iPhoneX";
if ([deviceModel isEqualToString:@"iPhone10,6"]) return @"iPhoneX";
if ([deviceModel isEqualToString:@"iPhone11,8"]) return @"iPhoneXR";
if ([deviceModel isEqualToString:@"iPhone11,2"]) return @"iPhoneXS";
if ([deviceModel isEqualToString:@"iPhone11,6"]) return @"iPhoneXSMax";
if ([deviceModel isEqualToString:@"iPhone11,4"]) return @"iPhoneXSMax";
if ([deviceModel isEqualToString:@"i386"]) return @"Simulator";
if ([deviceModel isEqualToString:@"x86_64"]) return @"Simulator";
return deviceModel;
}
获取包名
+ (NSString *)getAppBundleId {
NSBundle *currentBundle = [NSBundle mainBundle];
NSDictionary *infoDictionary = [currentBundle infoDictionary];
return [infoDictionary objectForKey:@"CFBundleIdentifier"];
}
获取版本号
+ (NSString *)currentVersion {
return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
}
获取build号
+ (NSString *)currentBulidVersion {
return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
}
查看是否开启代理
+ (NSString *)fetchHttpProxy {
CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();
const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef,
(const void*)kCFNetworkProxiesHTTPProxy);
NSString* proxy = (__bridge NSString *)proxyCFstr;
if (proxy.length>0) {
return @"1";
}else {
return @"0";
}
}
判断手机是否越狱
#pragma mark - 判断是否越狱
+ (NSString *)isJailbroken {
BOOL isJaiBroken = [self Jailbroken];
if (isJaiBroken) {
return @"1";
} else {
return @"0";
}
}
+ (BOOL)Jailbroken {
const char *examineBreak_Tool_pathes[] = {
"/Applications/Cydia.app",
"/Library/MobileSubstrate/MobileSubstrate.dylib",
"/bin/bash",
"/usr/sbin/sshd",
"/etc/apt"
};
// 判断是否存在越狱文件
for (int i = 0; i < 5; i++) {
if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:examineBreak_Tool_pathes[i]]]){
return (YES) && checkInject();
}
}
return (NO) && checkInject();
}
bool checkInject(void) {
int ret ;
Dl_info dylib_info;
const char * string = NULL;
int (*func_stat)(const char *, struct stat *) = stat;
if ((ret = dladdr(func_stat, &dylib_info))) {
string = dylib_info.dli_fname;
}
NSString *tmpStr = [[NSString alloc] initWithUTF8String:string];
if ([tmpStr isEqualToString:@"/usr/lib/system/libsystem_kernel.dylib"]) {
return NO ;
} else {
return YES;
}
}