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