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

 我来答
匿名用户
2014-12-20
展开全部
1. 使用canOpenURL判断
[cpp] view plaincopyprint?
NSURL *instagramURL = [NSURL URLWithString:@"instagram://location?id=1"];  
BOOL hasInstagram = [[UIApplication sharedApplication] canOpenURL:instagramURL];  
此方法需要定义URLSchemes
2. UIDevice Category For Processes
[cpp] view plaincopyprint?
// .h  
  
@interface UIDevice (ProcessesAdditions)  
- (NSArray *)runningProcesses;  
@end  
  
// .m  
#import <sys/sysctl.h>  
  
@implementation UIDevice (ProcessesAdditions)  
  
- (NSArray *)runningProcesses {  
  
        int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};  
        size_t miblen = 4;  
          
        size_t size;  
        int st = sysctl(mib, miblen, NULL, &size, NULL, 0);  
          
        struct kinfo_proc * process = NULL;  
        struct kinfo_proc * newprocess = NULL;  
          
    do {  
                  
        size += size / 10;  
        newprocess = realloc(process, size);  
                  
        if (!newprocess){  
                          
            if (process){  
                free(process);  
            }  
                          
            return nil;  
        }  
                  
        process = newprocess;  
        st = sysctl(mib, miblen, process, &size, NULL, 0);  
                  
    } while (st == -1 && errno == ENOMEM);  
          
        if (st == 0){  
                  
                if (size % sizeof(struct kinfo_proc) == 0){  
                        int nprocess = size / sizeof(struct kinfo_proc);  
                  
                        if (nprocess){  
                          
                                NSMutableArray * array = [[NSMutableArray alloc] init];  
          
                                for (int i = nprocess - 1; i >= 0; i--){  
                  
                                        NSString * processID = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_pid];  
                                        NSString * processName = [[NSString alloc] initWithFormat:@"%s", process[i].kp_proc.p_comm];  
                  
                                        NSDictionary * dict = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:processID, processName, nil]   
                                                                                                                                                forKeys:[NSArray arrayWithObjects:@"ProcessID", @"ProcessName", nil]];  
                                        [processID release];  
                                        [processName release];  
                                        [array addObject:dict];  
                                        [dict release];  
                                }  
          
                                free(process);  
                                return [array autorelease];  
                        }  
                }  
        }  
          
        return nil;  
}  
  
 
// Example usage.  
NSArray * processes = [[UIDevice currentDevice] runningProcesses];  
for (NSDictionary * dict in processes){  
        NSLog(@"%@ - %@", [dict objectForKey:@"ProcessID"], [dict objectForKey:@"ProcessName"]);  
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式