2013-04-15 2 views
9

Próbuję dowiedzieć się, jak obsłużyć wynik tego kodu, aby sprawdzić, czy Mapy Google są zainstalowane w aplikacji.Sprawdź, czy aplikacja Mapy Google jest zainstalowana w systemie iOS 6

[[UIApplication sharedApplication] canOpenURL: 
[NSURL URLWithString:@"comgooglemaps://"]]; 

Tworzę UIAlertView z opcją tam i czy jest czy nie życzę, aby dać użytkownikowi różne opcje.

Jak mogę uzyskać wynik powyższego kodu i zmienić go w BOOLEAN?

Z góry dziękuję.

Odpowiedz

21

Rezultatem jest już od canOpenURL: logiczną:

BOOL canHandle = [[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps:"]]; 

if (canHandle) { 
    // Google maps installed 
} else { 
    // Use Apple maps? 
} 
+0

Fajne to ma sens teraz - Nigdy nie widziałem go tak jak :-) –

+0

działa idealnie –

+0

zwraca false i google map już jest w iPhone jest jakieś inne rozwiązanie ios9 ??? –

4

powyżej dla iOS 9.0

Krok 1. Dodaj comgooglemaps w LSApplicationQueriesSchemes w swoich aplikacjach Info.plist

Krok 2.

BOOL isGoogleMap = [[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps://"]]; 
UIAlertView *alert; 

if(isGoogleMap) 
{ 
    alert = [[UIAlertView alloc] 
      initWithTitle:@"Get Directions" 
      message:@"Show Map" 
      delegate:self 
      cancelButtonTitle:@"Cancel" 
      otherButtonTitles:@"View in Apple Maps", @"View in Google Maps", nil]; 
} 
else 
{ 
    alert = [[UIAlertView alloc] 
      initWithTitle:@"Get Directions" 
      message:@"Show Map" 
      delegate:self 
      cancelButtonTitle:@"Cancel" 
      otherButtonTitles:@"View in Apple Maps", nil]; 
} 
alert.tag = 1010; 
[alert show];