簡體   English   中英

同步服務器和iOS應用程序之間的文件目錄

[英]Synchronize Directory of Files Between Server and iOS Application

我正在構建一個內部iOS應用程序(因此 - 它不會在應用程序商店中),我需要在服務器和iOS應用程序的每個實例之間保持內容目錄同步。 如果我只想刪除並重新下載此內容,這很容易,但我寧願使用類似於rsync的東西來下載已更改的元素。

我還沒有找到任何利用rsync的好方法。 我認為在這里看Objective-Git是一種可能性,但是很快就會看到仍然有很多對遠程存儲庫的支持尚未得到支持。

作為最后一點,雖然這不會在應用程序商店中,但我不會越獄這些設備,我寧願不依賴任何私有API(盡管如果有一個優雅的解決方案利用私有API,我可能會考慮它)。

思考?

附加說明:這需要是一個孤立的解決方案。 我不會依賴外部服務(如Dropbox,Box.net等......)。 這需要僅在設備和服務器之間(與設備在本地網絡上)之間起作用。

使用HTTP列出服務器上每個文件夾的內容。 比較每個文件的上次修改時間與設備上的修改時間,並識別添加/刪除的文件。 獲取添加和修改的文件,刪除已刪除的文件。

聽起來你可能要求一個已經這樣做的庫,但是如果你沒有找到它,那么使用服務器上的stat(2)並且相同或更高 - 從頭開始​​編寫它顯然是相當容易的。 iOS設備上的等效級別。 讓iPhone將帶有修改日期的文件樹發送到服務器,並獲取插入/刪除/更新操作列表以處理每個文件的URL(或其他),以便您可以在后台線程上逐步執行這些操作。 從服務器獲取有關新/更新文件的信息包括服務器具有的mod日期,以便您可以在iOS設備上將其設置為相同,並在向服務器詢問每個文件的狀態時發送(使用黑客的類型)存儲它的文件系統,但它工作)。

為什么不設置RESTful接口並跨HTTP進行; 這樣,您可以輕松地查詢修改時間,以確定是否需要更新客戶端或服務器文件。 您可能還想跟蹤客戶端上的哪些文件已同步,因此您可以輕松了解要添加或刪除的文件。 這可以使用簡單的.sync文件或使用plist / sqlite /等來完成。

如果您考慮FTP,可以使用一些非常先進的客戶端庫。

例如, iOS Chilkat軟件包包含一個支持雙向同步的FTP客戶端庫。 它不是免費的,但它相當便宜 - 你會得到大量其他東西,這些東西有可能在某一天變得有用。 這是iOS下拉所有添加和更改的示例(模式2):

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

一個警告 - 僅從示例中判斷,它似乎不同步刪除。 如果這是一項要求,您可以自行完成,而不需要在同步后立即付出太多努力。

鑒於最初的問題,acrosync(請參閱https://acrosync.com/library.html )似乎很合適,但我還沒有使用過它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM