【问题标题】:Event alarms not created correctly in EventKit with iOS4.3 / calendars synced to Google Calendar在 iOS4.3 的 EventKit 中未正确创建事件警报/日历同步到 Google 日历
【发布时间】:2013-07-08 18:08:44
【问题描述】:

我有一个看似简单的教科书案例,使用 EventKit 创建带有警报的事件。令人沮丧的是,它不起作用。这就是我正在做的事情:

  1. [EKEvent eventWithEventStore:] 创建一个EKEvent 并填写一系列属性
  2. 使用[myEvent addAlarm:[EKAlarm alarmWithRelativeOffset:]]添加警报
  3. 使用[myEventStore saveEvent:span:error:] 保存事件

整个过程唯一“不寻常”的地方是我使用的是旧版 iOS 手机(iPhone 4 上的 iOS4.3.3),而且我使用的所有日历都同步到 Google 日历.

我有一个日历(我们称之为 CalendarA),它在 Google 日历中设置为针对新事件设置 30 分钟自动闹钟,而另一个日历 (CalendarB) 没有设置为任何自动闹钟。

这是我看到的破坏行为:

  • 当我将带有某种非零 relativeOffset(例如 5 分钟)的 EKAlarm 添加到 CalendarA 时,日历会忽略我的偏移并将其设置为 30 分钟
  • 当我在 CalendarB 中执行相同操作时,我的闹钟会被完全忽略,事件最终没有闹钟

真的很奇怪:如果我将 relativeOffset 设置为零,那么对于这种特殊情况,一切都很好! (在 CalendarA 和 CalendarB 情况下都正确添加了零偏移警报)。顺便说一句,如果我根本不创建闹钟,CalendarA 中的事件仍然会收到 30 分钟的闹钟。我想对此无能为力。

我也尝试在事件创建后立即保存事件,然后立即向已保存的实例添加警报并再次保存。这没有帮助。

如果我通过手机上的本机日历应用程序手动创建带有闹钟的事件,闹钟工作得非常好,所以我知道 可以将任意闹钟同步到 Google 日历 - 问题是如何通过代码来实现。

我怎样才能使我的事件警报正常运行?

【问题讨论】:

    标签: ios cocoa-touch ios4 google-calendar-api eventkit


    【解决方案1】:

    这在 iOS 4.2 上对我有用,看看它是否也对你有帮助

     EKEventStore* eventStore = [[EKEventStore alloc] init];
     EKEvent* event = [EKEvent eventWithEventStore:eventStore];
     // set startDate, endDate, title, location, etc.
    
    [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -5.0f]]; // 5 min
    
    [event setCalendar:[eventStore defaultCalendarForNewEvents]];
    NSError* error = nil;
    BOOL success = [eventStore saveEvent:event span:EKSpanThisEvent error:&error]; 
    

    【讨论】:

      【解决方案2】:

      哇,我刚刚解决了...显然这与 iOS 版本、Google 日历同步等无关。我只是没有意识到我需要将 negative 值传递给警报与相对偏移。这完全不直观。使用负偏移量,它可以完美运行。这也解释了为什么之前零偏移有效。

      (我猜它可能与 Google 日历有点关系……我猜其他日历可能支持事件后的警报,这样我就可以更轻松地调试问题,但是Google 日历不支持它,因此无效的“未来警报”将被忽略)。

      还有一个小问题,即在 CalendarA 中基本上无法在没有警报的情况下创建事件,但我的猜测是这里什么都做不了 - 即使是本机日历应用程序也有这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多