我认为尝试在数据存储中复制每个事件的信息将是次优的。如果您想要一切,那么您最终将存储大量数据,我怀疑其中大部分将毫无用处。
如果您想存储数据以进行统计分析,我建议您确定要跟踪的最小字段集是什么,然后存储它们。一组合理的字段可能是:事件 ID、名称、时间、参加者、位置、描述和用于簿记目的的内部版本号。每次字段更改时增加版本号,并保存新的字段信息。如果最近检索到的条目的哈希值与已保存的哈希值匹配,您可以保存字段的哈希值,而不是保存新版本。
由于您不再将整个事件存储在服务器上,因此在需要事件详细信息时是否直接查询 API 的问题显然是“是”。
Google 日历会在创建或更改日历事件时提供电子邮件通知。如果您担心用户会收到有关其日历上出现的新事件的通知,可以通过将sendNotifications
字段(在插入新事件的调用中)设置为 来轻松解决true
。API 中的更新和删除调用(以及用户修改事件时的日历 UI)中存在类似的功能。
我在这个实现中看到的最困难的部分是决定您的应用程序如何在用户进行修改时确定事件何时发生变化。(您的代码所做的更改可以立即反映在您保存在数据存储中的数据中。)如果所有事件都出现在一个日历上,您可以轮询 API 以获取事件列表,并使用updatedMin
您的时间字段最后查询更新。如果事件在多个日历上,方法是相同的,但您需要为每个日历做一个列表。
请注意,您向应用程序提供的任何凭据都需要能够读取和写入您正在修改的任何日历。作为初始方法,我建议您为您的应用程序创建一个主日历,将其列为您正在跟踪的所有事件的参与者。您代表用户创建的活动会将用户列为与会者。用户创建并希望与您的应用程序关联的事件需要将主日历添加为参与者。最后一点可能需要管理用户以正确的方式与系统交互进行一些培训。
上述方法的替代方法是让所有用户将其日历的访问权限委托给您的应用程序,但您必须管理多组凭据,并可能清除用户日历上您不感兴趣跟踪的任何事件。