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

MBLTDev15: Artemiy Sobolev, Parallels

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