嗯,我可以回答自己。
的CalDAV
的CalDAV是上的WebDAV頂部的協議,該協議是HTTP 協議的擴展。 CalDAV描述於RFC 4791。它使用iCalendar作爲數據格式。有很多的實現。
關於衝突CalDAV使用409 Conflicts
狀態碼(HTTP 1.1)。客戶必須處理這個錯誤代碼,據我所知,iCal(Mac客戶端)只是恢復本地更改。 然後,在服務器中定義規則以便知道如果發生衝突時如何處理,如果無法解決其中一個問題,那麼我們只需發送一個409
狀態代碼就很容易。
作爲標準,CalDAV致力於管理日曆數據,並且有很多客戶端。
不幸的是,Android的沒有提供使用該協議的任何原生解決方案,實際上它不提供其他任何東西比Exchange ActiveSync的(由谷歌使用)。但Android Market上有大量的CalDAV客戶端。
iOS擁有CalDAV的原生支持。
的SyncML
同步MRKUP語言是管理數據,由諾基亞,IBM,各大企業創造了一個獨立於平臺的同步語言......這是一個開放的標準。它使用HTTP作爲傳輸和XML來描述信息。有各種服務器實現,例如Funambol是衆所周知的。
SyncML描述7個同步:
- 雙向同步:關於修改服務器和客戶端共享信息,但客戶端是其中第一個發送的變化;
- 慢同步:客戶端發送其所有數據。服務器確定其數據和客戶端數據之間的增量,然後服務器發送該增量。它經常用於第一次同步;
- 單向同步,僅限客戶端:客戶端向服務器發送更改;
- 來自客戶端的刷新同步:客戶端發送其所有數據,服務器發送其所有數據;
- 單向同步,僅限服務器:服務器向客戶端發送更改;
- 從服務器刷新同步:服務器發送其所有數據,客戶端用服務器的數據替換其數據;
- 服務器警報同步:服務器要求客戶端啓動給定的同步。
的SyncML處理服務器上conflits與像Updates mades on the Client always win
,Updates mades on the Client always win
一組預定義的規則,...
SyncML是專用於數據同步,但也的iOS也不的Android支持它。諾基亞或三星智能手機似乎支持這個協議,以及Windows Phone 6.
那麼,
Microsoft Exchange ActiveSync是支持幾乎所有智能手機和重度客戶端的最佳選擇。但是,這不是一個開放的標準,而且它是商業的,我沒有爲這些原因描述它,只記得它。
關於移動操作系統:
- 的Android不支持任何東西比ActiveSync的,但是一些好的客戶CalDAV的存在;
- iOS支持CalDAV,但不支持SyncML,據我所知,沒有用於日曆數據的SyncML客戶端(Funambol爲聯繫人提供客戶端);
- Windows Phone 7不支持ActiveSync以外的任何其他功能;
- RIM(BlackBerry)似乎不支持CalDAV,但有SyncML客戶端;
- 我不確定其他操作系統(如Bada,...)。
在法國,的iOS表示移動市場的60%,並Android有30%。
最好的解決方案(至少對我來說)首先是實現一個CalDAV服務器,它具有一套自定義規則來處理衝突,然後實現一個SyncML服務器來覆蓋其餘的市場。
我不明白你如何處理與CalDAV的衝突。從我見過的情況來看,從來沒有任何「409衝突」。相反,客戶端(iOS/DAVDroid)在推送('PUT')之前同步('PROPRIND' /'REPORT')。因此,如果服務器上有新的日曆對象,它會覆蓋本地更改。在這種情況下,客戶端從不通知服務器本地更改!因此,像事件參與這樣的變化可能會被完全忽略,並且在服務器端無法處理它...... – KrisWebDev 2016-05-01 20:29:37