天天看點

開啓其他應用程式 App 的方法(ios 呼叫 app)

http://furnacedigital.blogspot.com/2011/10/app.html

在開啓其他應用程式之前,我們必須要先知道該應用程式的 URL Scheme,先前文章已經寫過許多 開啓內建應用程式的方法,之是以能夠成功呼叫這些應用程式,其原因就在於我們已經事先知道呼叫它們時所需要的 Scheme,像是使用 http: 可以呼叫 Sanari,或是使用 sms: 可以呼叫內建簡訊的應用程式等,而下列示範將示範如何替一個應用程式設定它專屬的 Scheme,以及如何使用其他應用程式來呼叫它。

首先是替一個應用程式加上專屬的 Scheme,好讓他可以被其他應用程式所呼叫,找到該應用程式的 Info.plist 檔案,並替它增加一個 URL types 屬性,並將其內預設的 URL Identifier 屬性修改為 URL Scheme,並於 URL Scheme 屬性中填入該應用程式專屬的 Scheme 值,如下圖(該應用程式的專屬 Scheme 為 FurnaceDEMO)。

開啓其他應用程式 App 的方法(ios 呼叫 app)

在做好此項設定後,隻要此應用程式存在於裝置內,就可以透過這個 URL Scheme 被其他應用程式開啓,開啓的方式如下程式碼。

1 [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"FurnaceDEMO:"]];

使用此方法來開啓其他應用程式,也可以同時帶入其他的相關資訊,像是在 開啓 Sanari 應用程式範例一文中,除了呼叫內建的 Sanari 瀏覽器外,同時也帶入了要開啓的網址,如果要實做此方法,我們必須回到被開啓的應用程式的 AppDelegate.m 中,替它新增一個內建函式,此函式會在開啓時被執行,並且以 NSURL 型態接收另一個應用程式所傳來的資訊,函式如下。

1 2 3 4 5 //在被呼叫開啓時所執行的內建函式 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {   return YES; }

透過上述函式,我們可以透過分析 NSURL 來得到所需的資訊,分析 NSURL 的方法可以參考 NSURL 的網址解析 Parse一文。

下列是本範例中的所使用到的關鍵程式碼。

開啓其他應用程式的部份

1 2 3 4 5 6 7 8 9 -(IBAction) open {       //判斷裝置中是否有 Scheme 為 FurnaceDEMO 的應用程式     if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"FurnaceDEMO:"]]) {           //開啓目標應用程式並以 NSURL 的方式帶入資訊         [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@" FurnaceDEMO://Show.Me.More.DEMO"]];     }    }

被開啓的應用程式所做的 NSURL 處理

1 2 3 4 5 6 7 //在被呼叫開啓時所執行的內建函式 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {       //顯示分析NSURL的結果     self.viewController.myLabel.text = [NSString stringWithFormat:@"%@",[url host]];     return YES; }