Upload
ruparallels
View
185
Download
5
Embed Size (px)
Citation preview
Артемий Соболев, 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
ContentsMacOSXcode
• Директория с расширением
• Помогает изолировать контент
• Все приложения и фреймворки - 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 Storage1 МБ must have нотификация нет
iCloud Documents iCloud есть NS(UI)Documents callbacks автоматически
iCloud File
StorageiCloud есть
NSFilePresenter's callbacks есть
Core Data in
iCloudiCloud Device есть нотификация автоматически
CloudKitiCloud + Big
Public нетPush
Notifications есть
Расширяем горизонты с помощью iCloud
Artemiy Sobolev
Software Developer, Parallels Inc. c
24