2

考えているアプリを実装するための適切なテクノロジを探しています。基本的に、2つのiOSデバイスを介して接続を確立するためにBluetoothを使用しています。通信の最初の部分では、メッセージを送信するだけで、すべて正常に機能します。2 番目の部分では、ユーザーがビデオ ファイルを共有できるようにします。たとえば、ビデオ ファイルが 20 MB であるとします。では、この大容量のデータを 2 台のデバイスで転送するには、どのオプションが最適でしょうか? GameKit を使用してデータを小さなパケットに分割することはできますか? 相当時間かかりますよね?または、Bonjour を使用して、ユーザーが同じ Wi-Fi ネットワークに接続されるまで待つか、2 つのデバイスを介して Wi-Fi ネットワークを作成することをお勧めします。

前もって感謝します

4

1 に答える 1

4

他の誰か (私のような) がこの質問に出くわした場合に備えて、私の経験を共有します。

ブルートゥース

長所: 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 プロトコルを実装) を別のデバイスに送信できます。

于 2016-01-04T19:12:09.530 に答える