Rag*_*hav 10 c# java outlook calendar fullcalendar
我在我的应用程序中使用FullCalendar来显示通过我们自己的应用程序创建的事件.
我有一个用于创建/更新事件的添加/编辑表单.这些事件存储在应用程序使用的db中.
我需要更进一步,需要将Google和Outlook日历同步到我的日历中.这应该是2路同步即
如果我在日历中创建/编辑/更新活动,则应在Google/Outlook日历中创建/编辑/删除该活动.
反之亦然.
如果我在Google/Outlook日历中进行了一些更改,则应该在我的日历中显示.
我想你实现这个想法:
我应该获取Google/Outlook的所有事件并将其导入我的数据库,然后在我的日历视图中显示它们.这在技术上是否可行?即将通道的整个事件集导入我的数据库.
我是否应该通过Google/Outlook API进行GET获取特定视图的事件,我现在正在我的日历中(我将有我的日历视图的开始数据和结束日期)并将它们显示到我的日历中(即我没有将这些外部事件存储在我的数据库中).如果用户希望对应通过其创建/更新和删除API调用直接更新到Google/Outlook日历的事件进行任何更改.
什么应该是最好的方法?
编辑:
我去了https://calendar.sunrise.am/(日历同步网络应用程序之一)并注意到了
即他们允许许多不同的应用程序日历/任务同步到他们的日历中.
看到所有我认为将所有这些应用程序的所有事件存储到我们自己的应用程序的数据库中是不可行的.如果通过我的应用程序对这些事件进行了任何更改,我应该调用这些应用程序的API以将更改转换为他们的应用程序(Google日历,Outlook等).
你的想法是什么?
Evk*_*Evk 16
为了能够创建可靠的同步解决方案,您需要做几件事.最重要的是,另一方(本例中的谷歌日历和Outlook)应该与您合作并提供api来执行增量同步.我没有看Outlook,但Google Calendar api为您提供了所需的一切.
首先回答你的问题 - 是的,你需要获取所有事件(你可能会跳过过去的事件)并将它们存储在你自己的数据库中.始终对所有外部源(以及您自己的数据库)进行查询的速度很慢,使同步变得更加困难并且限制了很多,因为您无法轻松地在多个源上过滤或搜索事件.下面我假设我们只使用Google日历,希望Outlook类似(但我没有检查).
所以你需要的清单:
您自己的事件数据库,其中事件表有几个重要的元数据列:Created\Updated(上次创建或更新事件的时间,与事件本身的日期无关),Source(此事件来自的地方,如Google Calendar, Outlook或您自己的应用程序),UpdatedAtSource(上次修改此事件的来源),EventID(事件的唯一标识符 - 在某些情况下具有防止重复的重要事项).
最初从目标提供程序获取所有事件并将它们存储在数据库中.以下是对Google日历事件结构的引用,您会看到所有必需的元数据字段(已创建,更新,ID)都存在于此处.
现在您需要关注来自提供商的新活动.您可以通过轮询(定期检查是否有新事件)或向您提供提供者推送事件来执行此操作.Google日历支持这两种选项.这是一个描述如何实现推送通知的链接,这里是描述如何仅获取新事件的链接,即您(您的应用程序)之前没有看到的事件.请注意,您不需要每次都获取整个列表,也不需要提供一些过滤器选项(例如"给我在2016-06-21之后创建的所有事件").所有这一切都是不可靠的,但谷歌日历开发人员知道如何制作良好的同步API,因此他们会为您解决这个问题.只需抓取并存储提供nextSyncToken并使用它来制作未来的请求.如果您使用推送通知 - 也总是定期轮询事件,但不经常(每隔几个小时一次).推送通知不是100%可靠,有些可能会错过 - 您需要处理那些使用该nextSyncTokenAPI.
因此,您可以看到有一些工作要做,但最终您会收到少量请求,并在每次向提供商发出请求时获取少量数据,您的用户将很乐意看到来自Google Calendar\Outlook的新活动在你的申请中立即(反之亦然).