1. 程式人生 > >iOS中如何撥出另一個應用

iOS中如何撥出另一個應用

        我們經常會遇到在一個應用裡面撥出另一個應用的需求,比如在文件裡面點選地址,呼叫safari來開啟網頁;比如在檔案瀏覽器裡面點選某種檔案,自動啟用一個應用來開啟檔案。

        iOS裡面對於這樣的需求使用URL來實現,把其他的應用看成一種資源,本質上就是呼叫系統資源。

        我們有兩個應用App1和App2,在App2裡面撥出App1,那麼首先要配置App1,讓系統認識App1的URL,這個就是配置info.plist檔案的某些項,在Xcode裡面就是配置一些選項,在Xcode4.6.2裡面的樣子如下圖:

        

        這樣就設定好了相關項,Identifier需要保持每個應用不同,所以推薦採用逆向域名,URL Schemes就是呼起這個應用的URL的開頭。

        在App1的設定到這裡就可以了,App2裡面需要撥出App1時,程式碼也很簡單:

    NSURL *url = [NSURL URLWithString:@"myapp://"];
    
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        NSLog(@"can open %@", url);
        [[UIApplication sharedApplication] openURL:url];
    }
        URL必須myapp://起頭,後面可以跟上一些內容,如果僅僅要撥出應用,那麼僅寫這個頭也可以了。

        到這裡,我們已經實現了在App2內撥出App1。在iOS4.2的系統之後,這樣的一個呼叫會在App1裡面呼叫-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id) annotation這樣一個方法。