아이폰에 어떤 앱이 설치되어 있는지 확인하기
이 질문에는 세 가지 기술적 포인트가 있습니다.
1. 제품 B가 설치되었는지 검사합니다.
2. 응용 프로그램에서 다른 앱을 여는 기술: 참조:https://developer.apple.com/library/IOs/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW18
3. 응용 프로그램에서 app 다운로드 페이지로 이동하는 기술: 참조:http://blog.csdn.net/zengconggen/article/details/6789420
제2, 3점에 대해 본문은 생략하고 말하지 않는다.현재 제1기술점 방안을 제공한다. (설명: 기술이 위험하고 앱이 거부될 수 있다. 그러나 앱스토어에는 유사한 온라인 작품이 있다. RP 참조)
해결 방안1: (경험증: 이 방안의 실제 ios5는 무효, 아날로그 가능)
// Declaration
BOOL APCheckIfAppInstalled(NSString *bundleIdentifier); // Bundle identifier (eg. com.apple.mobilesafari) used to track apps
// Implementation
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;
// 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;
if ([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory: &isDir] && !isDir) // Ensure that file exists
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
if (cacheDict) // If cache is loaded, then break the loop. If the loop is not "broken," it will return NO later (default: case)
break;
}
NSDictionary *system = [cacheDict objectForKey: @"System"]; // First check all system (jailbroken) apps
if ([system objectForKey: bundleIdentifier]) return YES;
NSDictionary *user = [cacheDict objectForKey: @"User"]; // Then all the user (App Store /var/mobile/Applications) apps
if ([user objectForKey: bundleIdentifier]) return YES;
// If nothing returned YES already, we'll return NO now
return NO;
}
솔루션 2: 참조:http://blog.csdn.net/zengconggen/article/details/7714466
이 방안에는 제한이 있습니다. 사용자가 최근에 실행한 앱만 얻을 수 있습니다.설치되어 있지만 최근에 실행되지 않은 앱입니다.해당 없음.
솔루션 3:
BOOL isExsit = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"rumtel://com.rumtel.AudioManager"]];
NSLog(@"App %@ installed", identifier);
if (isExsit)
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"rumtel://com.rumtel.AudioManager?a=1&b=2#sect"]];
}
else
{
// app store
}
방안 3은 B의 오픈 주소를 알아야 한다.사용 가능합니다.최종 시나리오는 3으로 결정됨
첨부: 현재 공개된 앱 관련 자료:http://wiki.akosma.com/IPhone_URL_Schemes
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JavaScript의 Cache API - 단 20줄의 코드만 있으면 됩니다.이제 API를 이렇게 호출할 수 있습니다. If there is a cache value of the current api call then it will return values from cache otherwis...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.