SlideShare a Scribd company logo
1 of 24
Download to read offline
Артемий Соболев,
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

More Related Content

What's hot

RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Ontico
 
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Ontico
 
Open jdk and eclipse plugin java, oss on windows azure - 15.10.13
Open jdk and eclipse plugin   java, oss on windows azure - 15.10.13Open jdk and eclipse plugin   java, oss on windows azure - 15.10.13
Open jdk and eclipse plugin java, oss on windows azure - 15.10.13
Microsoft
 

What's hot (20)

RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
 
DevOps в команде TeamCity. Евгений Кошкин, Senior Software Developer, TeamCity
DevOps в команде TeamCity. Евгений Кошкин, Senior Software Developer, TeamCityDevOps в команде TeamCity. Евгений Кошкин, Senior Software Developer, TeamCity
DevOps в команде TeamCity. Евгений Кошкин, Senior Software Developer, TeamCity
 
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
 
DevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System AdministratorDevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System Administrator
 
Tizen for Wearable Development Gear2 Danilov
Tizen for Wearable Development Gear2 DanilovTizen for Wearable Development Gear2 Danilov
Tizen for Wearable Development Gear2 Danilov
 
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
 
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
 
Microsoft , Azure и Drupal
Microsoft , Azure и DrupalMicrosoft , Azure и Drupal
Microsoft , Azure и Drupal
 
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
Open jdk and eclipse plugin java, oss on windows azure - 15.10.13
Open jdk and eclipse plugin   java, oss on windows azure - 15.10.13Open jdk and eclipse plugin   java, oss on windows azure - 15.10.13
Open jdk and eclipse plugin java, oss on windows azure - 15.10.13
 
Зачем мне docker, я же сисадмин?!
Зачем мне docker, я же сисадмин?!Зачем мне docker, я же сисадмин?!
Зачем мне docker, я же сисадмин?!
 
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
 
Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack
 
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Vizor Interactive: Технологии успеха
Vizor Interactive: Технологии успехаVizor Interactive: Технологии успеха
Vizor Interactive: Технологии успеха
 

Viewers also liked

Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Ontico
 
Kolerov parallels cloud_market_in_numbers
Kolerov parallels cloud_market_in_numbersKolerov parallels cloud_market_in_numbers
Kolerov parallels cloud_market_in_numbers
ru_Parallels
 
Cloud forum anisimov parallels
Cloud forum anisimov  parallelsCloud forum anisimov  parallels
Cloud forum anisimov parallels
Expolink
 
Стратегия реализации облачных вычислений предприятия. На что нужно обратить в...
Стратегия реализации облачных вычислений предприятия. На что нужно обратить в...Стратегия реализации облачных вычислений предприятия. На что нужно обратить в...
Стратегия реализации облачных вычислений предприятия. На что нужно обратить в...
Cisco Russia
 

Viewers also liked (7)

Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
 
Kolerov parallels cloud_market_in_numbers
Kolerov parallels cloud_market_in_numbersKolerov parallels cloud_market_in_numbers
Kolerov parallels cloud_market_in_numbers
 
Облачный рынок в России в и в мире. Взгляд Parallels.
Облачный рынок в России в и в мире. Взгляд Parallels.Облачный рынок в России в и в мире. Взгляд Parallels.
Облачный рынок в России в и в мире. Взгляд Parallels.
 
Cloud forum anisimov parallels
Cloud forum anisimov  parallelsCloud forum anisimov  parallels
Cloud forum anisimov parallels
 
Стратегия реализации облачных вычислений предприятия. На что нужно обратить в...
Стратегия реализации облачных вычислений предприятия. На что нужно обратить в...Стратегия реализации облачных вычислений предприятия. На что нужно обратить в...
Стратегия реализации облачных вычислений предприятия. На что нужно обратить в...
 
Mirantis OpenStack. Обзор
Mirantis OpenStack. ОбзорMirantis OpenStack. Обзор
Mirantis OpenStack. Обзор
 
Servionica: опыт публичного облака на базе OpenStack
Servionica: опыт публичного облака на базе OpenStackServionica: опыт публичного облака на базе OpenStack
Servionica: опыт публичного облака на базе OpenStack
 

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

И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
Stanfy
 
Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5
Docsvision
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Badoo Development
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
Sergey Xek
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещах
ITCrowd Almaty
 

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

#MBLTdev: Core Data: особенности использования и синхронизация в iCloud (Avia...
#MBLTdev: Core Data: особенности использования и синхронизация в iCloud (Avia...#MBLTdev: Core Data: особенности использования и синхронизация в iCloud (Avia...
#MBLTdev: Core Data: особенности использования и синхронизация в iCloud (Avia...
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Libraries
LibrariesLibraries
Libraries
 
Libraries
LibrariesLibraries
Libraries
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
Как делать backup MySQL
Как делать backup MySQLКак делать backup MySQL
Как делать backup MySQL
 
Крыша 2.0
Крыша 2.0Крыша 2.0
Крыша 2.0
 
Workflows в Express 42
Workflows в Express 42Workflows в Express 42
Workflows в Express 42
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
 
eDocLib. Удобный архив. Быстрый поиск. Надежное хранение.
eDocLib. Удобный архив. Быстрый поиск. Надежное хранение.eDocLib. Удобный архив. Быстрый поиск. Надежное хранение.
eDocLib. Удобный архив. Быстрый поиск. Надежное хранение.
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещах
 
Well-executed architecture decisions for game backend on Unity
Well-executed architecture decisions for game backend on UnityWell-executed architecture decisions for game backend on Unity
Well-executed architecture decisions for game backend on Unity
 

More from ru_Parallels

2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation
ru_Parallels
 
Инновационные решения для роста облачного бизнеса
Инновационные решения для роста облачного бизнесаИнновационные решения для роста облачного бизнеса
Инновационные решения для роста облачного бизнеса
ru_Parallels
 
Pavel Ershov on WHD.Moscow
Pavel Ershov on WHD.MoscowPavel Ershov on WHD.Moscow
Pavel Ershov on WHD.Moscow
ru_Parallels
 

More from ru_Parallels (18)

OpenStack лучше с Virtuozzo
OpenStack лучше с VirtuozzoOpenStack лучше с Virtuozzo
OpenStack лучше с Virtuozzo
 
Цифровой суверенитет для российских облачных систем
Цифровой суверенитет для российских облачных системЦифровой суверенитет для российских облачных систем
Цифровой суверенитет для российских облачных систем
 
Виртуализация инфраструктуры ЦОД российской разработки
Виртуализация инфраструктуры ЦОД российской разработкиВиртуализация инфраструктуры ЦОД российской разработки
Виртуализация инфраструктуры ЦОД российской разработки
 
Resource management in the cloud
Resource management in the cloudResource management in the cloud
Resource management in the cloud
 
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
 
Передача состояния с iPhone на Apple Watch
Передача состояния с iPhone на Apple WatchПередача состояния с iPhone на Apple Watch
Передача состояния с iPhone на Apple Watch
 
Надежность ПО и Runtime Verification
Надежность ПО и Runtime VerificationНадежность ПО и Runtime Verification
Надежность ПО и Runtime Verification
 
Vagrant Plugin development
Vagrant Plugin developmentVagrant Plugin development
Vagrant Plugin development
 
Управление рисками в разработке программного обеспечения
Управление рисками в разработке программного обеспеченияУправление рисками в разработке программного обеспечения
Управление рисками в разработке программного обеспечения
 
Virtuozzo platform
Virtuozzo platformVirtuozzo platform
Virtuozzo platform
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программист
 
Доклад Михаила Егорова на PHDays
Доклад Михаила Егорова на PHDaysДоклад Михаила Егорова на PHDays
Доклад Михаила Егорова на PHDays
 
Доклад Якова Зубарева на конференции MBLT15
Доклад Якова Зубарева на конференции MBLT15Доклад Якова Зубарева на конференции MBLT15
Доклад Якова Зубарева на конференции MBLT15
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
 
2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation
 
Инновационные решения для роста облачного бизнеса
Инновационные решения для роста облачного бизнесаИнновационные решения для роста облачного бизнеса
Инновационные решения для роста облачного бизнеса
 
Pavel Ershov on WHD.Moscow
Pavel Ershov on WHD.MoscowPavel Ershov on WHD.Moscow
Pavel Ershov on WHD.Moscow
 
KAnisimov riw2011-hosting-future
KAnisimov riw2011-hosting-futureKAnisimov riw2011-hosting-future
KAnisimov riw2011-hosting-future
 

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

  • 1. Артемий Соболев, Software Developer, Parallels Расширяем горизонты с помощью iCloud
  • 2. Человек носит с собой в среднем 3 устройства 2
  • 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 • File Presenter может представлять директорию • Другие callbacks: • presentedItem -> presentedSubitem • Все callbacks в одном месте • Автоматическое слияние на уровне файлов File Wrappers + File Presenter 14
  • 15. • Выбираем технологию исходя из целей Что такое iCloud? 15
  • 16. • Ubiquity Key-Value Storage • iCloud Documents • iCloud File Storage • Core Data in iCloud • CloudKit Возможности iCloud 16
  • 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