他の誰か (私のような) がこの質問に出くわした場合に備えて、私の経験を共有します。
ブルートゥース
長所: Wi-Fi は必要ありません
短所:
Apple は BLE インターフェイスへのアクセスのみを許可しており、これは通常の Bluetooth よりもはるかに低速です。これを試してみたところ、1 MB のデータを転送するのに約 5 分かかりました。また、データを最大 20 バイトのチャンクに分割し、ファイルが反対側で正しく受信されるようにする必要があります。
ゲームキット
私は実際に試したことはありませんが、GK は小さなテキスト メッセージを送信するのには問題ないようですが (このように設計されているため)、大きなファイルの送信は依然としてかなり遅くなります。また、同時に接続できるデバイスは 8 台までです。
ボンジュールと Wi-Fi
長所:これは可能な限り高速です。妥当なサイズのファイル (数 MB) を数秒で送信できます。
短所:同じ Wi-Fi ネットワークに接続する必要があります。
リモートサーバーの使用
長所:まともなインターネット接続があると仮定すると、かなり高速で、Wi-Fi に依存していません (3G/LTE を使用している場合)。
Parse のような Backend-as-a-Service プロバイダーを使用すると、これは非常に簡単であることがわかります。
短所: サーバー ソフトウェアを作成する必要があります。おそらく、アプリのユーザーにはモバイル データ プランが必要です。
サーバー側のコードを書きたくなかったので、Bonjour と Wifi を使用して解決策 #3 に行き着きました。これを行うには、Socket プログラミングについて学ぶ必要があります。ファイルを正しく受信したことを確認する必要がないように、TCP を使用する CocoaAsyncSocket を使用することをお勧めします。
現在は 2016 年であり、Swift は Obj-C プロジェクトで使用できるため、私のソリューションを見ることができます。
あらゆる種類のオブジェクト (NSCoding プロトコルを実装) を別のデバイスに送信できます。