2011-08-15 92 views
0

我有幾個iOS應用程序,我需要他們知道對方。更確切地說,我需要知道是否已經安裝了我的一個應用程序。如何讓我的iOS應用程序彼此交談?

我想過註冊一個自定義URL方案(類似於my-app-present://),以便我可以檢查自定義方案是否受支持,如果是,我會知道設備上已有一個應用程序。但是這並不奏效,因爲這些計劃是通過Info.plist註冊的,並且該應用程序在它有機會檢查其存在之前註冊該計劃。換句話說,檢查總是成功的。

然後我想到了在臨時目錄中創建一個文件,但NSTemporaryDirectory()在應用程序沙箱中返回一個文件夾,所以這也不起作用。我也考慮過鑰匙串,但它看起來像每個應用程序嚴格分離iOS上的鑰匙串。

我不想通過正在運行的應用程序的列表,我不想使用網絡。你知道一些其他的技巧嗎?

+4

其實很多應用程序可以使用相同的鑰匙串,但只有當他們有SAM **捆綁種子ID **,你在**的iOS Provisioning Portal中給了他們**時創造新的**應用程序ID **。這只是P.S.,因爲您已經從@jtbandes爲您的問題提供瞭解決方案。 –

回答

2

只要您對每個應用程序有不同的方案,例如my-app-1://my-app-2://,自定義URL方案方法聽起來都很好。然後(我認爲這是您已經知道的),您可以使用canOpenURL:來檢查URL是否可以被處理(即您的應用程序已安裝)。

+0

這實際上是大多數應用程序所需要的,他們需要這種互操作性。 –

+0

謝謝(+1)。我想到了這一點,但我已經因爲濫用一個URL方案而感到尷尬,更不用說其中的幾個了。但更糟糕的是,當我發佈一個新的應用程序時,我將不得不更新所有應用程序中的邏輯,對吧? – zoul

+0

是的,如果您的所有應用都需要了解*所有*您的其他應用。如果是這樣的話,也許你可以將所有的URL方案存儲在服務器上並動態加載它們? – jtbandes

0

如果通過「互相交談」,你意味着你只是想檢測是否安裝了其他應用程序,那麼iHasApp是一個開源的iOS框架可以派上用場。我還沒有用過它。但從描述來看,它似乎是一個不錯的選擇。

http://www.ihasapp.com/documentation/Classes/iHasApp.html

+1

iHasApp已不再符合App Store –

+1

相關提示。謝謝! –

相關問題