2

私は、1 つの Web ドキュメントに接続している 5 人ほどのユーザーを含む iOS アプリを作成しようとしています。そのうちの 1 人はそれを編集し、他のユーザーはリアルタイムで更新を受け取ります。

ドキュメントをリアルタイムで更新できるようにアプリを作成するにはどうすればよいですか (ユーザーが「同期」ボタンをクリックする必要はありません)。共有 Google ドキュメントと同様に機能する必要があります。1 人のユーザーが変更を加えると、すべてのユーザーのコピーに即座に反映されますが、Web ブラウザーではなく iOS でネイティブに実行する必要があります。

私は完全なアプリの回路図やコードを求めているわけではありません。正しい方向への微調整だけが必要です。

4

1 に答える 1

2

ドキュメントのマスター コピーをサーバーに保持し (ちなみに、これを効果的に機能させるにはサーバーが必要です)、ユーザーがローカルに保存されているドキュメントの一時的なバージョンを編集することをお勧めします。 iPhone では、変更があった場合はサーバーに常に通知され、サーバーのバージョンが変更されると (サーバーのバージョンがデバイスのバージョンと同じでない場合)、サーバーはメッセージを送信します。するかどうかを指定するために作成する特別なプロトコルを使用して

  1. コンテンツ (テキスト、画像など) がドキュメントに追加されます
  2. ドキュメントからコンテンツが削除されます
  3. コンテンツはドキュメントで編集されます
  4. ...要点がわかります

必要なのは、サーバー ドキュメントに加えられたさまざまな種類の変更をデバイスに通知するさまざまな方法だけです。これらの通知から、サーバーのバージョンに加えられた変更に応じて、ユーザーの一時ドキュメントを変更できます。完全なドキュメントを何度もダウンロードする必要はありません。ときどき (または手動のユーザー入力から)、iPhone アプリで完全なサーバー ドキュメントを要求して、iPhone で行われたすべての変更が正しいことを確認できます。

NSInputStreams およびs を使用NSOutputStreamして、サーバーへのメッセージの送受信を行います。を使用しNSStreamDelegateてサーバー イベントを処理します (唯一のインスタンス メソッドはイベント処理メソッドです)。このガイドは、メッセージの送信について何も知らない場合に最適な出発点です。プロトコルを保存できる s をNSData送受信できます。NSString

プロトコルの例として、私が作成した、Windows サーバーとの間でメッセージを送受信するアプリは、次のことを行います。

  1. iOS アプリで送信するデータを準備するとき、最初に 4 バイトのデータをNSDataオブジェクトに書き込みます。これには、サーバーがストリームから読み取るバイト数が正確にわかるように、進行中のデータの長さが含まれます。4 バイトを選択したのはunsigned int、それが型のサイズであり、非常に大きな数 (したがって非常に大きなデータ サイズ) を表すことができるためです。
  2. オブジェクトにデータを追加しNSDataます。struct私の場合、データは a の形式です。実際、相手側で解析する方法を知っている限り、あらゆるタイプのデータを送信できます。
  3. オブジェクトを送りNSDataます。

実際、メッセージの送信、受信、および解析NSStreamは非常に簡単ですが、iOS アプリ用のサーバー/クライアント コードを初めて作成する場合、そのプロセスは困難に思えるかもしれません。サーバーがメッセージを受信する準備ができているかどうか、メッセージを書き込むためのスペースがあるかどうかなども考慮する必要があるため、プロセスをかなり単純化しましたが、以前にリンクしたガイドも正しいですhereは、クライアント サーバー アプリを作成していたときに非常に役立ちました。

願わくば、これらのガイドラインが十分に一般的 (かつ適切なトピックに特化したもの) であることを願っています。

于 2012-05-12T02:29:03.633 に答える