大家一定碰到过,一些无良的第三方市场,无耻地用正版的名义盗版你的APP(作者曾经天真的以为他们只是发布itunes的链接),在天朝这个神奇的土地上,还没办法制裁他们,真是让人头疼。
前面也就是发发牢骚,反过来说他们也带来了一定的用户量(虽然忠诚度不好说),接下去要告诉你的就是鉴别的方法。
以下这段代码是用来鉴别是否是越狱用户的,由于越狱用户可以打破沙盒机制,所以你的APP可以直接访问到用户机器中的系统文件。
+ (BOOL)isJailbroken
{
/* Cydia.app */
NSString *cydiaPath = @"/Applications/Cydia.app";
if ([[NSFileManager defaultManager] fileExistsAtPath:cydiaPath]) {
return YES;
}
/* apt */
NSString *aptPath = @"/private/var/lib/apt/";
if ([[NSFileManager defaultManager] fileExistsAtPath:aptPath]) {
return YES;
}
return NO;
}
下面这段是用来检测是否是“伪正版”的,“伪正版”的原理是使用企业级证书顶替掉你的个人证书,而企业级证书做出来的ItunesMetadata.plist中是没有购买者的AppleID的,所以你可以通过检测此文件来进行判断。也有网上流传说PP助手和同步助手的“伪正版”中是有AppleID的,但是我找了下我的APP做了下比较,好像没有发现,希望有经验的朋友指点下。
+ (BOOL)isPirated
{
NSString *path = [NSHomeDirectory() stringByAppendingString:@"/iTunesMetadata.plist"];
NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
if (infoDic[@"com.apple.iTunesStore.downloadInfo"][@"accountInfo"][@"AppleID"]) {
return NO;
} else if (infoDic[@"appleId"])
{
return NO;
} else {
return YES;
}
}