2016-04-17 50 views
1

我想在安裝在同一部手機上的兩個應用程序之間進行通信。爲了做到這一點,我閱讀了許多官方文件,瞭解我必須實施Custom URL Scheme無法使用canOpenUrl進行InterApp通信

在iOS 9之前,我們似乎必須在Info 中添加一個URLType,並定義URL Scheme:「」。

但是在iOS 9之後,它改變了應用程序之間通信的方式。

url方案示例在Querying URL Schemes with canOpenURL中討論。

應用的過程中下面的代碼:

@IBAction func sender(sender: AnyObject) { 

    let ourapplication : UIApplication = UIApplication.sharedApplication() 
    let ourpath : String = "iOSTest://" 
     //.stringByAppendingString(urlEncodedText) 
    let oururl : NSURL = NSURL(string: ourpath)! 

    ourapplication.canOpenURL(oururl) 
} 

在我的應用B,我在Info.plist中

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>iOSTest</string> 
</array> 

我的iPhone上添加URL名稱iOSTest當我安裝這兩個應用程序來測試,它根本不起作用。

這是我的錯誤!

Error photo

這有什麼錯我的應用程序?

回答

3

您的設置不正確。應用程序canOpenURL是需要將自定義方案添加到LSApplicationQueriesSchemes列表的應用程序。

由於應用程序A被調用canOpenURLiIOSTest,它是一個應用程序,需要添加iOSTestLSApplicationQueriesSchemes列表,而不是應用程序B.

應用B將是需要註冊,它響應iOSTest應用以便在其他應用程序調用openURL時使用iOSTest的方案打開它。

+0

是的,正好。只需交換'LSApplicationQueriesSchemes' –

+0

你在問什麼?如何使用App B註冊自定義方案,或者您需要在App B中編寫哪些代碼?無論哪種方式,這是一個完全不同的問題。這些都覆蓋在文檔和其他許多問題中。這個問題應該被解決後才能關閉。如果您需要額外問題的幫助,請發佈針對該問題的其他問題。 – rmaddy

+0

我不明白爲什麼canOpenURL不起作用? – HungCLo