en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

9.05.2013

開啓其他應用程式 App 的方法

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

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


在做好此項設定後,只要此應用程式存在於裝置內,就可以透過這個 URL Scheme 被其他應用程式開啓,開啓的方式如下程式碼(一個應用程式也可以使用多個不同的 Scheme 名稱)。

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

//在被呼叫開啓時所執行的內建函式
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

return YES;
}

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

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

開啓其他應用程式的部份
-(IBAction) open {

    //判斷裝置中是否有 Scheme 為 FurnaceDEMO 的應用程式
    if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"FurnaceDEMO:"]]) {

        //開啓目標應用程式並以 NSURL 的方式帶入資訊
        [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"FurnaceDEMO://Show.Me.More.DEMO"]];
    }
}

被開啓的應用程式所做的 NSURL 處理
//在被呼叫開啓時所執行的內建函式
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

    //顯示分析NSURL的結果
    self.viewController.myLabel.text = [NSString stringWithFormat:@"%@",[url host]];
    return YES;
}


ps:回傳值為 NO 則會詢問是否要開啟此應用程式。





沒有留言:

張貼留言