2012-10-20 162 views
8

我正在處理我的iPhone應用程序中的地圖應用程序。如何從iPhone應用程序啓動另一個應用程序

我有一個按鈕go

當用戶點擊這個方法我要檢查,如果用戶已經安裝了對他的iPhone應用程序waze這個按鈕。如果是,則導航到waze應用程序,否則打開iPhone的默認地圖應用程序。

回答

22

嘗試做這樣:

NSString *wazeAppURL = @"waze://"; 
NSString *mapsAppURL = @"maps://"; 

BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:wazeAppURL]]; 

NSString *url = canOpenURL ? wazeAppURL : mapsAppURL; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]; 

在這裏,canOpenURL讓你測試是否安裝在您的iPhone位智的應用程序。如果iPhone可以打開網址這意味着你已經擁有該應用程序,它將啓動它。否則,它將啓動默認的地圖應用程序。 Safari不會被調用。

+0

喜,如果我們打開網址的控制將轉向Safari和在那裏我會得到URL的應用商店網址或任何東西else.my申請點從我的應用程序,用戶可以通過Waze的導航,同時點擊,如果Waze的按鈕應用程序安裝在用戶手機其他明智的默認app.how我可以檢查waze應用程序安裝在用戶的iPhone.c中,請您詳細說明所有這些事情。 –

+1

我編輯了我的答案..對你來說更清楚嗎? – bs7

+0

是的,它是工作正常,沒有打開safari.thank你變化很大.... –

5

要打開你需要調用

BOOL canOpenURL = [[UIApplication sharedApplication] 
         canOpenURL:[NSURL URLWithString:@"app://"]]; 
if (canOpenUrl) [[UIApplication sharedApplication] 
         openURL:[NSURL URLWithString:url]]; 

要找到所有的URL,訪問這個頁面的應用程序:http://handleopenurl.com/

特別是對於Waze的,http://handleopenurl.com/scheme/waze

希望這會有所幫助。

+0

這對我有效..謝謝+1 –

0

請注意,在iOS上,您還可以導航到Google地圖 - 並傳遞查詢字符串或地址。以下是導航到特定地址點的一個示例:

if (self.mapView.userLocation.location) { 
    NSString *urlAsString = [NSString stringWithFormat:@"comgooglemaps://?q=%f,%f", self.mapView.userLocation.location.coordinate.latitude, self.mapView.userLocation.location.coordinate.longitude]; 
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlAsString]]) { 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlAsString]]; 
    } 
} 

只是一個提高用戶體驗的建議。

相關問題