Я использую CalendarStore API для создания задач (элементы CalTask). Я предполагаю, что при этом эти элементы будут автоматически синхронизироваться с iCloud (при условии, что у пользователя есть эта настройка в Системных настройках). На самом деле, CalendarStore документы говорят:
База данных магазина Календаря хранит локальные копии записей
принадлежность к схеме Календари. Если системные настройки MobileMe
настроен для синхронизации схемы Календари, а затем ваши изменения в эти
записи, используя интерфейс программирования магазина календаря, также
синхронизируется.
Но, похоже, простое создание элементов в CalendarStore не вызывает синхронизацию их с iCloud. Я знаю, что мои предметы правильно поступают в CalendarStore, потому что я вижу, что изменения возвращаются (я наблюдаю CalTasksChangedNotification
и CalTasksChangedExternallyNotification
, и мои изменения проходят через это). Но пока я не запустил iCal, синхронизация iCloud не происходит.
Я не думаю, что я что-то не так делаю в своем коде. Фактически, вы можете воспроизвести это с помощью образца кода Apple CalendarItems . Создание задач и событий не приведет к синхронизации CalendarStore, пока вы не запустите iCal.
Предварительно iCloud, вы использовали SyncServices для этого (хорошая статья здесь об этом), но я вроде думал, что это не использовалось с Lion и iCloud. На самом деле, я даже не могу найти документы Apple по SyncServices.
Я знаю, что можно программно запускать синхронизацию CalendarStore с iCloud, потому что это делают другие приложения (я смотрю на тебя, Фантастика). Кто-нибудь может дать мне какие-нибудь указатели?
Есть пара похожих вопросов , но они предварительно iCloud и, похоже, не были решены.
Обновление: Хотя кажется, что оно все еще работает, я вижу, что Sync Services официально объявлен устаревшим в Lion. Неужели нет замены?