2012-06-27 2 views
1

В моем приложении я использую API EventKit для доступа к календарям на своем устройстве и отображения их в своих представлениях. Однако, работая с сетевыми календарями, я подозреваю, что EKEventStore вернет какой-то список кэшированных/локальных событий при запросе, вместо того, чтобы перезагружать календарь и возвращать фактическое/последнее содержимое.
Когда вместо этого запускается собственное приложение для календаря, приложение обновит/перезагрузит все календари, синхронизирует любые общие сетевые календари. Возвращаясь к моему приложению, теперь также будут отображаться новые синхронизированные события.Вопросы синхронизации событий EventKit

В дополнение к этому, я обнаружил, что изменение любых событий (удаление/обновление) через мое приложение и EventKit/EventKitUI не синхронизируется с e. г. мой календарь Mac.

Чтобы сократить длину короткой строки: есть ли способ принудительно синхронизировать с сетевыми общими календарями в EventKit/iOS SDK?

+0

Вы решили это? Я тоже это переживаю. Похоже, что она синхронизируется, но может занять несколько дней. Как вы сказали, родное приложение календаря iOS заставит синхронизацию, поэтому, похоже, что-то особенное. –

+0

К сожалению, пока я не смог найти какое-либо решение. – user826955

ответ

10
  1. Вы можете использовать метод - (void)refreshSourcesIfNecessary из EKEventStore инстанции:

    ... тянуть новые данные из удаленных источников, если местные данные устарели.

    Это приведет к обновлению локального хранилища календарей путем извлечения последних удаленных данных. У меня такое ощущение, что это метод, который использует приложение Calendar iOS для запуска обновления.

  2. Что касается проблемы с удаленными и обновленными событиями календаря, которые не синхронизируются с вашим Mac, вы уверены, что вы вызываете - (void)commit: на свой EKEventStore экземпляр после внесения изменений?

    В качестве альтернативы существует выбор методов в пределах EKEventStore для сохранения и удаления календарей и событий, которые также предлагают параметр фиксации, который может немедленно зафиксировать ваши изменения. Я бы опубликовал ссылки, но как новый пользователь, я могу использовать только две гиперссылки.

    - (void)saveEvent:span:commit:error:
    - (void)removeEvent:span:commit:error:

    Предполагая, что эти события добавляются в облаке на основе календаря, то это должно иметь эффект синхронизации изменений на вашем Mac.

Смежные вопросы