Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Расширяем горизонты с помощью iCloud

Доклад Артемия Соболева на конференции MBLTdev

  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

Расширяем горизонты с помощью iCloud

  1. 1. Артемий Соболев, Software Developer, Parallels Расширяем горизонты с помощью iCloud
  2. 2. Человек носит с собой в среднем 3 устройства 2
  3. 3. Платформ становится больше 3
  4. 4. • Данные • Нотификации • Разрешение конфликтов • Что передаем • Модельные объекты • Настройки приложения • Текущее состояние приложения Передача состояния 4
  5. 5. • Бесконечный объем данных • Мгновенная синхронизация • Всегда доступно • Разрешение конфликтов так, как хотел пользователь Идеальная картина vs Реальность 5
  6. 6. • Ограничения часов • Время взаимодействия • Небольшая память • Крохотный экран • Маленькая батарейка 6 Parallels Access для  Watch
  7. 7. 7 • Особенности • Не может быть полностью автономным • Передача нового состояния с iPhone в любой момент времени • Дельта изменения • Невозможно использовать симулятор Parallels Access для  Watch
  8. 8. Parallels Access application •Нет делегатов •Нет нотификаций •Только KVO •Специальные ViewModel 8 Архитектура приложения для  Watch
  9. 9. • Надежный механизм синхронизации iCloud: • NSFileCoordinator • NSFilePresenter • Обертки файлов - NSFileWrapper • NSCoding Наш механизм синхронизации 9
  10. 10. • Инициализируется для каждой операции с файлами • Координирует чтение и запись в файл • Не асинхронно • Содержит список методов для координации NSFileCoordinator 10
  11. 11. • Обязательные свойства • presentedItemURL: NSURL • presentedItemOperationQueue: NSOperationQueue • Чтобы добавить или удалить файл презента • NSFileCoordinator.addFilePresenter(…) • NSFileCoordinator.removeFilePresenter(…) NSFilePresenter Protocol 11
  12. 12. • presentedItemDidChange • presentedItemDidMoveToURL: • presentedItemDidGainVersion: • presentedItemDidLoseVersion: • presentedItemDidResolveConflictVersion: • NSFileVersion NSFilePresenter callbacks 12
  13. 13. Xcode.app Contents MacOS Xcode • Директория с расширением • Помогает изолировать контент • Все приложения и фреймворки - FileWrappers File Package 13
  14. 14. <host id>.paxhost hostInfo.plist img.png • File Presenter может представлять директорию • Другие callbacks: • presentedItem -> presentedSubitem • Все callbacks в одном месте • Автоматическое слияние на уровне файлов File Wrappers + File Presenter 14
  15. 15. • Выбираем технологию исходя из целей Что такое iCloud? 15
  16. 16. • Ubiquity Key-Value Storage • iCloud Documents • iCloud File Storage • Core Data in iCloud • CloudKit Возможности iCloud 16
  17. 17. • NSUbiquityIdentityDidChangeNotification • NSFileManager().ubiquityIdentityToken() iCloud account 17
  18. 18. • Размер - менее 1 МБ • Кеш - must have • например, в NSUserDefaults • Уведомления - нотификация • NSUbiquitousKeyValueStoreDidChangeExternallyNotification • Конфликты - нет • используя нотификацию и локальный кеш • Сценарий - настройки, what is new NSUbiquitousKeyValueStore 18
  19. 19. • Размер - весь объем iCloud • Кеш - ubiquity item local version • Уведомления - NS(UI)Documents callback method • Конфликты - автоматически • Сценарий - только формат документов iCloud File Storage NSDocument, UIDocument classes 19
  20. 20. • Размер - весь объем iCloud • Кеш - ubiquity item local version • Уведомления - есть • NSFilePresenter’s callbacks • Конфликты - есть • NSFilePresenter's callbacks • Сценарии - обширные iCloud file storage NSFileCoordinator + NSFilePresenter 20
  21. 21. • Размер - весь объем iCloud, объем девайса • Кеш - ubiquity item local version • Уведомления - есть • notification • Конфликты - автоматически • Сценарии - обширные iCloud file storage CoreData 21
  22. 22. • Размер - весь объем iCloud + публичная часть • Кеш - срез данных в локальном контейнере + NSCoding • Уведомления - есть • push notifications • Конфликты - есть • CKRecordSavePolicy • Сценарии - обширные + данные между пользователями CloudKit 22
  23. 23. Все технологии вместе 23 Размер, лимит Механизм кеширования Уведомления Конфликты Ubiquity Key- Value Storage 1 МБ must have нотификация нет iCloud Documents iCloud есть NS(UI)Docume nts callbacks автоматически iCloud File Storage iCloud есть NSFilePresent er's callbacks есть Core Data in iCloud iCloud Device есть нотификация автоматически CloudKit iCloud + Big Public нет Push Notifications есть
  24. 24. Расширяем горизонты с помощью iCloud Artemiy Sobolev asobolev@parallels.com Software Developer, Parallels Inc. c 24

×