您的位置:首页 > 移动开发

检查ios设备上是否安装了某些app

2015-11-23 20:29 225 查看
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;

}

@end

// Example usage.

NSArray * processes = [[UIDevice currentDevice] runningProcesses];

for (NSDictionary * dict in processes){

NSLog(@"%@ - %@", [dict objectForKey:@"ProcessID"], [dict objectForKey:@"ProcessName"]);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: