我们正在处理的应用程序被拒绝,因为审核过程中的设备被检测为越狱^^
为了检测越狱装置,进行了几次测试:
NSString* bundlePath = [[NSBundle mainBundle] bundlePath];
// scan for itunes metadata
BOOL isDirectory = NO;
NSString* directoryPath = [bundlePath stringByAppendingPathComponent:@"SC_Info/"];
BOOL directoryIsAvailable = [[NSFileManager defaultManager] fileExistsAtPath:directoryPath isDirectory:&isDirectory];
BOOL contentSeemsValid = ([[[NSFileManager defaultManager] contentsOfDirectoryAtPath:directoryPath error:NULL] count] == 2);
if (directoryIsAvailable && contentSeemsValid) {
return YES;
}
contentSeemsValid = [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/iTunesMetadata.plist", bundlePath]];
if (contentSeemsValid) {
return YES;
}
// scan for cydia app
NSURL* testURL = [NSURL URLWithString:@"cydia://"];
if ([[UIApplication sharedApplication] canOpenURL:testURL]) {
return YES;
}
// scan for paths available
NSArray* paths = @[@"/Applications/Cydia.app", @"/Applications/RockApp.app", @"/Applications/Icy.app", @"/usr/sbin/sshd", @"/usr/bin/sshd", @"/private/var/lib/apt", @"/private/var/lib/cydia", @"/private/var/stash", @"/usr/libexec/sftp-server"];
for (NSString* string in paths) {
if ([[NSFileManager defaultManager] fileExistsAtPath:string]) {
return YES;
}
}
// scan for forking
int forkValue = fork();
if (forkValue >= 0) {
return YES;
}
// try to write in private space
NSString* testString = @"test";
NSError* error = nil;
[testString writeToFile:@"/private/test.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (error == nil) {
return YES;
}
// seems not jailbroken
return NO;
这些测试中的一个(或多个)在Apple用于Review的设备上返回YES,但没有一个我们的DevDevices。可能是哪一个?有没有人知道更多有关Apple用于评论的设备的详细信息?任何提示或其他猜测? (应用程序的上下文是医院的医疗保健,所以我们需要确保患者数据被保存)
最诚挚的问候,
Zeek