开启其他应用程式 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)。



在做好此項設定後,只要此應用程式存在於裝置內,就可以透過這個 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;
}

你可能感兴趣的:(面试,软件,iPhone开发,苹果,开源技术)