我正在使用 ews-java-api 并遇到很多问题
我创建约会并监听其他地方创建的约会。
我的问题是我创建约会
new Appointment(exchangeService).save(notificationMode)
我还将约会详细信息(包括 uniqueId,我们称之为 x)保存到我的数据库中
我看到约会显示在交换中没有问题,然后我看到一条通知,表明它已被自动接受(我可以关闭房间的自动接受,但仍然遇到下面相同的问题。
然后,我看到我的 Exchange 订阅者启动,因为它收到来自 Exchange 的通知事件,表明已创建新约会。我似乎每次都会收到4个事件,一个创建事件,两个修改事件和移动事件。
问题是每个事件都有一个 uniqueId y,而不是我所期望的 x。
这意味着我无法检查这是否是我已经创建的约会。
我从未像我预期的那样收到具有原始 uniqueId x 的事件。我知道唯一的 id 可以更改,这很糟糕,但似乎没有任何其他字段我可以使用。
有什么想法可以解决/解决这个问题吗?
最佳答案
当项目所在的 Activity 目录发生变化时,项目的给定 ID 也会发生变化。听起来您的自动接受正在移动该项目。我还没有测试过这种情况。
如果您执行简单的 .save() 操作,您将在下次推/拉时从交换中获得创建和修改事件。似乎没有办法阻止这种情况。它们的 ID 应该与您从保存中获得的 ID 相同。您只需要检查您是否已经拥有用于创建的项目。对于修改,我不能代表 Microsoft 解释为什么我们会进行修改,但它应该与创建完全相同。
然后,当项目更改目录时,您将收到修改和移动事件。这 2 件元素的 ID 与您在原始保存期间收到的 ID 不同。 ItemEvent 有一个 oldItemId 我相信您可以使用。也可以从这些 id 中解析出 GUID,这些 id 不会改变,但我认为没有必要这样做。最好的方法可能是使用 OldItemId 并处理移动事件。
关于java - Exchange 日历、创建约会和唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010718/