8

私は内部 iOS アプリケーションを構築しています (つまり、App Store にはありません)。サーバーと iOS アプリケーションの各インスタンス間でコンテンツのディレクトリを同期しておく必要があります。毎回このコンテンツを削除して再ダウンロードしたいだけであれば、これは簡単ですが、rsync に似たものを使用して、変更された要素のみをダウンロードしたいと思います。

rsync を利用する良い方法が見つかりませんでした。ここで可能性として Objective-Git を検討することを検討しましたが、一見したところ、まだサポートされていないリモート リポジトリのサポートがまだたくさんあるように見えました。

最後に、これはアプリ ストアにはありませんが、これらのデバイスをジェイルブレイクするつもりはありません。また、プライベート API に依存しないことを好みます (ただし、プライベート API を利用した洗練されたソリューションがあれば、それを検討するかもしれません)。 )。

考え?

追加の注意: これは、分離されたソリューションである必要があります。外部サービス (Dropbox、Box.net など) に依存することはありません。これは、デバイスとサーバー (デバイスのあるローカル ネットワーク上にある) の間でのみ機能する必要があります。

4

5 に答える 5

3

HTTP を使用して、サーバー上の各フォルダーの内容を一覧表示します。各ファイルの最終変更時刻をデバイス上のファイルと比較し、追加/削除されたファイルを識別します。追加および変更されたファイルを取得し、削除されたファイルを削除します。

于 2012-10-22T10:20:22.863 に答える
1

すでにこれを行っているライブラリを求めているように思えますが、見つからない場合は、サーバー上で stat(2) と同じかそれ以上を使用して、これをゼロから作成するのは明らかに適度に簡単です- iOS デバイスで同等のレベル。iPhoneに変更日を含むファイルのツリーをサーバーに送信させ、それぞれのURL(または何でも)を処理する挿入/削除/更新操作のリストを取得して、バックグラウンドスレッドで段階的に実行できるようにします。新しい/更新されたファイルのサーバーからの情報には、サーバーが持っている変更日が含まれているため、iOS デバイスで同じになるように設定し、サーバーに各ファイルのステータスを要求するときにそれを送信できます (一種のハックを使用)それを保存するファイルシステムですが、動作します)。

于 2012-10-28T00:01:51.293 に答える
0

なぜRESTfulインターフェースをセットアップし、HTTP全体でそれを実行しないのですか。そうすれば、クライアントまたはサーバーのファイルを更新する必要があるかどうかを判断するのに十分簡単に​​変更時間を照会できます。また、クライアント上のどのファイルが同期されたかを追跡して、追加または削除するファイルを簡単に把握できるようにすることもできます。これは、単純な.syncファイルまたはplist /sqlite/などを使用して実行できます。

于 2012-10-25T20:11:43.030 に答える
0

acrosync ( https://acrosync.com/library.htmlを参照) は、最初の質問を考えると適切に思えますが、私自身はまだ使用していません。

于 2015-02-24T14:23:59.533 に答える
0

FTP を検討する場合は、かなり高度なクライアント ライブラリを利用できます。

たとえば、iOS Chilkat バンドルには、双方向の同期をサポートする FTP クライアント ライブラリが含まれています。無料ではありませんが、かなり安価です。また、いつか役立つ可能性が高いものを他にもたくさん入手できます。iOS がすべての追加と変更をプルダウンする例を次に示します (モード 2):

http://www.example-code.com/ios/ftp_syncLocalTree.asp

1 つの注意点 -- 例だけから判断すると、削除を同期しているようには見えません。これが必要な場合は、同期の直後にあまり労力をかけずに自分で行うことができます。

于 2012-10-27T05:34:25.687 に答える