2011-08-24 13 views

Odpowiedz

11

Jeśli aplikacja obsługuje niestandardowy schemat URL, możesz sprawdzić UIApplication-canOpenURL:. Dzięki temu dowiesz się, że dostępna jest aplikacja, która jest w stanie otworzyć ten schemat adresów URL, niekoniecznie która to aplikacja. Nie ma publicznie dostępnego mechanizmu sprawdzania, jakie inne aplikacje zainstalował użytkownik na swoim urządzeniu.

Jeśli sterujesz obiema aplikacjami, możesz również użyć udostępnionego pęku kluczy lub obszaru roboczego do komunikacji między nimi w bardziej szczegółowy sposób.

8

Można sprawdzić w ten sposób, a także:

BOOL temp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"yourAppURL://"]]; 
            
if(!temp) 
{ 
    NSLog(@"INVALID URL"); //Or alert or anything you want to do here 
} 
+3

Pierwsza linia nie skompilować dla mnie, ale to zrobił: 'BOOL temp = [[UIApplication sharedApplication] canOpenURL: [bibliotece NSURL URLWithString: @ "yourAppURL: //"]];' – newenglander

+0

Przykro mi, ale co to jest adres URL aplikacji? czy to nazwa aplikacji czy coś takiego? – ColdSteel

0

dla szybkich użytkowników

 let urlPath: String = "fb://www.facebook.com" 
    let url: NSURL = NSURL(string: urlPath)! 

    let isInstalled = UIApplication.sharedApplication().canOpenURL(url) 
    if isInstalled { 
     print("Installed") 
    }else{ 
     print("Not installed") 
    } 
0

Facebook używa tego https://github.com/facebook/facebook-ios-sdk/blob/master/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m wewnętrznie, można zrobić to samo

#define FBSDK_CANOPENURL_FACEBOOK @"fbauth2" 

+ (BOOL)isFacebookAppInstalled 
{ 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
    [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK]; 
    }); 
    NSURLComponents *components = [[NSURLComponents alloc] init]; 
    components.scheme = FBSDK_CANOPENURL_FACEBOOK; 
    components.path = @"/"; 
    return [[UIApplication sharedApplication] 
      canOpenURL:components.URL]; 
} 

kod w Swift 3

static func isFacebookAppInstalled() -> Bool { 
    let schemes = ["fbauth2", "fbapi", "fb"] 
    let schemeUrls = schemes.flatMap({ URL(string: "\($0)://") }) 

    return !schemeUrls.filter({ UIApplication.shared.canOpenURL($0) }).isEmpty 
} 
Powiązane problemy