2011-08-15 4 views
0

私はいくつかのiOSアプリを持っており、お互いのことを知っておく必要があります。もっと正確に言えば、既に私のアプリがインストールされているかどうかを知る必要があります。iOSアプリ同士の会話をどうすればできますか?

私はカスタムスキームがサポートされているかどうかを確認できるようにカスタムURLスキーム(my-app-present://のようなもの)を登録することを考えましたが、もしそうなら、すでに私のアプリケーションがデバイスにあります。しかし、スキームはInfo.plistによって登録されており、アプリはその存在を確認する機会がある前にスキームを登録するため、機能しません。つまり、チェックは常に成功します。

次に、一時ディレクトリにファイルを作成することを考えましたが、NSTemporaryDirectory()はアプリケーションサンドボックス内のフォルダを返すため、どちらも機能しません。私もキーチェーンについて考えましたが、各アプリケーションがiOS上で厳密に別々のキーチェーンを持っているように見えます。

私は実行中のアプリケーションのリストを調べたくないので、ネットワーキングを使用したくありません。あなたはいくつかの別のトリックを知っていますか?

+4

実際に多くのアプリケーションが同じキーチェーンを使用するかもしれないが、彼らは、SAMを持っている場合にのみ**あなたが**新しい**のApp IDを作成します**のiOSプロビジョニングポータルで彼らに与えたバンドルシードID ** **。あなたが@jtbandesからあなたの問題のための解決策を既に持っているので、これはP.S.です。 –

答えて

2

カスタムURLスキームのメソッドは、すべてのアプリに対して異なるスキーム(たとえば、my-app-1://およびmy-app-2://)を使用している限り、問題はありません。次に、あなたが既に知っていると仮定していると仮定して、canOpenURL:を使用してURLを処理できるかどうか(つまり、アプリがインストールされているかどうか)を確認できます。

+0

これは実際にはほとんどのアプリが行うことですが、この相互運用性が必要です。 –

+0

ありがとうございます(+1)。私はこれについて考えましたが、私はすでに、それらのうちのいくつかを除いて、1つのURLスキームを誤って使用していることについて既に恥ずかしいです。しかし、悪いことは、私が新しいアプリケーションをリリースするたびに、すべてのアプリケーションのロジックを更新する必要があるということですね。 – zoul

+0

はい、すべてのアプリがあなたの他のすべてのアプリについて*知っている必要がある場合。その場合、おそらく、すべてのURLスキームをサーバーに格納し、それらを動的にロードできますか? – jtbandes

0

「お互いに話す」というのは、他のアプリがインストールされているかどうかを検出したい場合、iHasAppがオープンソースのiOSフレームワークであれば便利です。私はまだそれを使用していない。説明から、それは良い選択であるように見えます。

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

+1

iHasAppはもはやApp Storeに準拠していません –

+1

知っておいてよかったですありがとう! –

関連する問題