打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何检查用户的ios设备上是否安装了某些app?

1. 使用canOpenURL判断

[cpp] view plaincopyprint?
  1. NSURL *instagramURL = [NSURL URLWithString:@"instagram://location?id=1"];  
  2. BOOL hasInstagram = [[UIApplication sharedApplication] canOpenURL:instagramURL];  

此方法需要定义URLSchemes


2. UIDevice Category For Processes

[cpp] view plaincopyprint?
  1. // .h  
  2.   
  3. @interface UIDevice (ProcessesAdditions)  
  4. - (NSArray *)runningProcesses;  
  5. @end  
  6.   
  7. // .m  
  8. #import <sys/sysctl.h>  
  9.   
  10. @implementation UIDevice (ProcessesAdditions)  
  11.   
  12. - (NSArray *)runningProcesses {  
  13.   
  14.         int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};  
  15.         size_t miblen = 4;  
  16.           
  17.         size_t size;  
  18.         int st = sysctl(mib, miblen, NULL, &size, NULL, 0);  
  19.           
  20.         struct kinfo_proc * process = NULL;  
  21.         struct kinfo_proc * newprocess = NULL;  
  22.           
  23.     do {  
  24.                   
  25.         size += size / 10;  
  26.         newprocess = realloc(process, size);  
  27.                   
  28.         if (!newprocess){  
  29.                           
  30.             if (process){  
  31.                 free(process);  
  32.             }  
  33.                           
  34.             return nil;  
  35.         }  
  36.                   
  37.         process = newprocess;  
  38.         st = sysctl(mib, miblen, process, &size, NULL, 0);  
  39.                   
  40.     } while (st == -1 && errno == ENOMEM);  
  41.           
  42.         if (st == 0){  
  43.                   
  44.                 if (size % sizeof(struct kinfo_proc) == 0){  
  45.                         int nprocess = size / sizeof(struct kinfo_proc);  
  46.                   
  47.                         if (nprocess){  
  48.                           
  49.                                 NSMutableArray * array = [[NSMutableArray alloc] init];  
  50.           
  51.                                 for (int i = nprocess - 1; i >= 0; i--){  
  52.                   
  53.                                         NSString * processID = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_pid];  
  54.                                         NSString * processName = [[NSString alloc] initWithFormat:@"%s", process[i].kp_proc.p_comm];  
  55.                   
  56.                                         NSDictionary * dict = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:processID, processName, nil]   
  57.                                                                                                                                                 forKeys:[NSArray arrayWithObjects:@"ProcessID", @"ProcessName", nil]];  
  58.                                         [processID release];  
  59.                                         [processName release];  
  60.                                         [array addObject:dict];  
  61.                                         [dict release];  
  62.                                 }  
  63.           
  64.                                 free(process);  
  65.                                 return [array autorelease];  
  66.                         }  
  67.                 }  
  68.         }  
  69.           
  70.         return nil;  
  71. }  
  72.   
  73. @end  
  74.   
  75. // Example usage.  
  76. NSArray * processes = [[UIDevice currentDevice] runningProcesses];  
  77. for (NSDictionary * dict in processes){  
  78.         NSLog(@"%@ - %@", [dict objectForKey:@"ProcessID"], [dict objectForKey:@"ProcessName"]);  
  79. }  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
自动修改android模拟设备号imei的小程序
nil Nil NULL NSNull 之间的区别
ios删除所有联系人信息
iOS中nil 、NULL、 Nil 、NSNull的区别
sphinx scws全文检索的安装配置步骤
获取进程列表、名称、路径
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服