簡體   English   中英

與Google日歷/ Outlook同步的2種方式

[英]2 way syncing with Google Calendar/Outlook

我在我的應用程序中使用FullCalendar來顯示通過我們自己的應用程序創建的事件。

我有一個用於創建/更新事件的添加/編輯表單。 這些事件存儲在應用程序使用的db中。

我需要更進一步,需要將Google和Outlook日歷同步到我的日歷中。 這應該是2路同步即

如果我在日歷中創建/編輯/更新活動,則應在Google / Outlook日歷中創建/編輯/刪除該活動。

反之亦然。

如果我在Google / Outlook日歷中進行了一些更改,則應該在我的日歷中顯示。

我想你實現這個想法:

  1. 我應該獲取Google / Outlook的所有事件並將其導入我的數據庫,然后在我的日歷視圖中顯示它們。 這在技術上是否可行? 即將通道的整個事件集導入我的數據庫。

  2. 我是否應該通過Google / Outlook API進行GET獲取特定視圖的事件,我現在正在我的日歷中(我將有我的日歷視圖的開始數據和結束日期)並將它們顯示到我的日歷中(即我沒有將這些外部事件存儲在我的數據庫中)。 如果用戶希望對應通過其創建/更新和刪除API調用直接更新到Google / Outlook日歷的事件進行任何更改。

什么應該是最好的方法?

編輯:

我去了https://calendar.sunrise.am/ (日歷同步網絡應用程序之一)並注意到了

在此輸入圖像描述

即他們允許許多不同的應用程序日歷/任務同步到他們的日歷中。

看到所有我認為將所有這些應用程序的所有事件存儲到我們自己的應用程序的數據庫中是不可行的。 如果通過我的應用程序對這些事件進行了任何更改,我應該調用這些應用程序的API以將更改轉換為他們的應用程序(Google日歷,Outlook等)。

你的想法是什么?

為了能夠創建可靠的同步解決方案,您需要做幾件事。 最重要的是,另一方(本例中的谷歌日歷和Outlook)應該與您合作並提供api來執行增量同步。 我沒有看Outlook,但Google Calendar api為您提供了所需的一切。

首先回答你的問題 - 是的,你需要獲取所有事件(你可能會跳過過去的事件)並將它們存儲在你自己的數據庫中。 始終對所有外部源(以及您自己的數據庫)進行查詢的速度很慢,使同步變得更加困難並且限制了很多,因為您無法輕松地在多個源上過濾或搜索事件。 下面我假設我們只使用Google日歷,希望Outlook類似(但我沒有檢查)。

所以你需要的清單:

  1. 您自己的事件數據庫,其中事件表有幾個重要的元數據列:Created \\ Updated(上次創建或更新事件的時間,與事件本身的日期無關),Source(此事件來自的地方,如Google Calendar, Outlook或您自己的應用程序),UpdatedAtSource(上次修改此事件的來源),EventID(事件的唯一標識符 - 在某些情況下具有防止重復的重要事項)。

  2. 最初從目標提供程序獲取所有事件並將它們存儲在數據庫中。 以下是對Google日歷事件結構的引用,您會看到所有必需的元數據字段(已創建,更新,ID)都存在於此處。

  3. 現在您需要關注來自提供商的新活動。 您可以通過輪詢(定期檢查是否有新事件)或向您提供提供者推送事件來執行此操作。 Google日歷支持這兩種選項。 是一個描述如何實現推送通知的鏈接, 這里是描述如何獲取新事件的鏈接,即您(您的應用程序)之前沒有看到的事件。 請注意,您不需要每次都獲取整個列表,也不需要提供一些過濾器選項(例如“給我在2016-06-21之后創建的所有事件”)。 所有這一切都是不可靠的,但谷歌日歷開發人員知道如何制作良好的同步API,因此他們會為您解決這個問題。 只需抓取並存儲提供的nextSyncToken並使用它來制作將來的請求。 如果您使用推送通知 - 也總是定期輪詢事件,但不經常(每隔幾個小時一次)。 推送通知不是100%可靠,有些可能會錯過 - 您需要處理那些使用nextSyncToken api的人。

  4. 將您自己的應用程序所做的更改推送到目標提供程 但是, 改變本身是由時立刻做到這一點。 而是使用后台進程逐個推送每個用戶+提供程序對的更改。 會出現網絡故障,會有沖突,因此您必須按順序推送更改,而不是並行推送(同樣,按順序推送每個用戶+提供商對,而不是全局推送)。 存儲上次成功推送更改的時間戳(同樣,對於每個用戶+提供商)以及進程是否已中斷 - 您知道從哪里開始。
  5. 我不會在這里討論太多,但你會發生沖突 - 也就是用戶在多個來源中修改了同一事件。 但是,如果您使用推送通知 - 沖突將非常罕見。 仍然你必須至少在用戶界面中為它們做計划。 如果您檢測到無法解決的沖突 - 暫停同步過程並詢問用戶如何解決它。

因此,您可以看到有一些工作要做,但最終您會收到少量請求,並在每次向提供商發出請求時獲取少量數據,您的用戶將很樂意看到來自Google Calendar \\ Outlook的新活動在你的申請中立即(反之亦然)。

暫無
暫無

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

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