当前位置: 代码迷 >> Iphone >> IOS获取当地应用程序信息
  详细解决方案

IOS获取当地应用程序信息

热度:100   发布时间:2016-04-25 05:50:00.0
IOS获取本地应用程序信息
最近要写一个项目,需要获取本地应用程序的相关信息。发现在iphone上的设置-用量里可以找到本地应用程序的信息,求有什么代码上的方法实现获取应用信息,除了越狱以外,如果通过向苹果公司申请一些授权可以获取也请帮忙告诉我,多谢~
------解决方案--------------------
估计是没办法了,不知道私有方法里有没有,

就算是有,也通过不了审核的
------解决方案--------------------
用到私有API了

BOOL APCheckIfAppInstalled(NSString *bundleIdentifier){
  static NSString *const cacheFileName = @"com.apple.mobile.installation.plist";
  NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName];
  NSDictionary *cacheDict = nil;
  NSString *path = nil;
  NSLog(@"relativeCachePath:%@",relativeCachePath);
  // Loop through all possible paths the cache could be in
  for (short i = 0; 1; i++)    {
    switch (i) {
      case 0: // Jailbroken apps will find the cache here; their home directory is /var/mobile
        path = [NSHomeDirectory() stringByAppendingPathComponent: relativeCachePath];
        break;
      case 1: // App Store apps and Simulator will find the cache here; home (/var/mobile/) is 2 directories above sandbox folder
        path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath];
        break;
      case 2: // If the app is anywhere else, default to hardcoded /var/mobile/
        path = [@"/var/mobile" stringByAppendingPathComponent: relativeCachePath];
        break;
      default: // Cache not found (loop not broken)
        return NO;
        break; 
    }
    BOOL isDir = NO;
    NSLog(@"path:%@",path);
    // Ensure that file exists
    if ([[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir] && !isDir){
      cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
    } 
    
    // If cache is loaded, then break the loop. If the loop is not "broken," it will return NO later (default: case)
    if (cacheDict){
      NSLog(@"cacheDict:%@",cacheDict);
      break;
    } 
    
  }
  
  NSLog(@"gggg");
  // First check all system (jailbroken) apps
  NSDictionary *system = [cacheDict objectForKey: @"System"]; 
  NSLog(@"system:%@",system);
  if ([system objectForKey: bundleIdentifier]){
    return YES;
  }
  
  // Then all the user (App Store /var/mobile/Applications) apps
  NSDictionary *user = [cacheDict objectForKey: @"User"]; 
  NSLog(@"user:%@",user);
  if ([user objectForKey: bundleIdentifier]){
    return YES;
  }
  
  // If nothing returned YES already, we'll return NO now
  return NO;
}
  相关解决方案