mbltdev15: artemiy sobolev, parallels

24
Артемий Соболев, Software Developer, Parallels Расширяем горизонты с помощью iCloud

Upload: e-legion

Post on 16-Feb-2017

277 views

Category:

Mobile


1 download

TRANSCRIPT

Page 1: MBLTDev15: Artemiy Sobolev, Parallels

Артемий Соболев, Software Developer, Parallels

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

Page 2: MBLTDev15: Artemiy Sobolev, Parallels

Человек носит с собой в среднем 3 устройства

2

Page 3: MBLTDev15: Artemiy Sobolev, Parallels

Платформ становится больше

3

Page 4: MBLTDev15: Artemiy Sobolev, Parallels

• Данные

• Нотификации

• Разрешение конфликтов

• Что передаем

• Модельные объекты

• Настройки приложения

• Текущее состояние приложения

Передача состояния

4

Page 5: MBLTDev15: Artemiy Sobolev, Parallels

• Бесконечный объем данных

• Мгновенная синхронизация

• Всегда доступно

• Разрешение конфликтов так,

как хотел пользователь

Идеальная картина vs Реальность

5

Page 6: MBLTDev15: Artemiy Sobolev, Parallels

• Ограничения часов

• Время взаимодействия

• Небольшая память

• Крохотный экран

• Маленькая батарейка

6

Parallels Access для Watch

Page 7: MBLTDev15: Artemiy Sobolev, Parallels

7

• Особенности

• Не может быть полностью автономным

• Передача нового состояния с iPhone в любой момент времени

• Дельта изменения

• Невозможно использовать симулятор

Parallels Access для Watch

Page 8: MBLTDev15: Artemiy Sobolev, Parallels

Parallels Access application

•Нет делегатов

•Нет нотификаций

•Только KVO

•Специальные ViewModel

8

Архитектура приложения для Watch

Page 9: MBLTDev15: Artemiy Sobolev, Parallels

• Надежный механизм синхронизации iCloud:

• NSFileCoordinator

• NSFilePresenter

• Обертки файлов - NSFileWrapper

• NSCoding

Наш механизм синхронизации

9

Page 10: MBLTDev15: Artemiy Sobolev, Parallels

• Инициализируется для каждой операции с

файлами

• Координирует чтение и запись в файл

• Не асинхронно

• Содержит список методов для координации

NSFileCoordinator

10

Page 11: MBLTDev15: Artemiy Sobolev, Parallels

• Обязательные свойства

• presentedItemURL: NSURL

• presentedItemOperationQueue: NSOperationQueue

• Чтобы добавить или удалить файл презента

• NSFileCoordinator.addFilePresenter(…)

• NSFileCoordinator.removeFilePresenter(…)

NSFilePresenter Protocol

11

Page 12: MBLTDev15: Artemiy Sobolev, Parallels

• presentedItemDidChange

• presentedItemDidMoveToURL:

• presentedItemDidGainVersion:

• presentedItemDidLoseVersion:

• presentedItemDidResolveConflictVersion:

• NSFileVersion

NSFilePresenter callbacks

12

Page 13: MBLTDev15: Artemiy Sobolev, Parallels

Xcode.app

ContentsMacOSXcode

• Директория с расширением

• Помогает изолировать контент

• Все приложения и фреймворки - FileWrappers

File Package

13

Page 14: MBLTDev15: Artemiy Sobolev, Parallels

<host id>.paxhost

hostInfo.plist

img.png

• File Presenter может представлять

директорию

• Другие callbacks:

• presentedItem -> presentedSubitem

• Все callbacks в одном месте

• Автоматическое слияние

на уровне файлов

File Wrappers + File Presenter

14

Page 15: MBLTDev15: Artemiy Sobolev, Parallels

• Выбираем технологию исходя из целей

Что такое iCloud?

15

Page 16: MBLTDev15: Artemiy Sobolev, Parallels

• Ubiquity Key-Value Storage

• iCloud Documents

• iCloud File Storage

• Core Data in iCloud

• CloudKit

Возможности iCloud

16

Page 17: MBLTDev15: Artemiy Sobolev, Parallels

• NSUbiquityIdentityDidChangeNotification

• NSFileManager().ubiquityIdentityToken()

iCloud account

17

Page 18: MBLTDev15: Artemiy Sobolev, Parallels

• Размер - менее 1 МБ

• Кеш - must have

• например, в NSUserDefaults

• Уведомления - нотификация

• NSUbiquitousKeyValueStoreDidChangeExternallyNotification

• Конфликты - нет

• используя нотификацию и локальный кеш

• Сценарий - настройки, what is new

NSUbiquitousKeyValueStore

18

Page 19: MBLTDev15: Artemiy Sobolev, Parallels

• Размер - весь объем iCloud

• Кеш - ubiquity item local version

• Уведомления - NS(UI)Documents callback method

• Конфликты - автоматически

• Сценарий - только формат документов

iCloud File Storage NSDocument, UIDocument classes

19

Page 20: MBLTDev15: Artemiy Sobolev, Parallels

• Размер - весь объем iCloud

• Кеш - ubiquity item local version

• Уведомления - есть

• NSFilePresenter’s callbacks

• Конфликты - есть

• NSFilePresenter's callbacks

• Сценарии - обширные

iCloud file storage NSFileCoordinator + NSFilePresenter

20

Page 21: MBLTDev15: Artemiy Sobolev, Parallels

• Размер - весь объем iCloud, объем девайса

• Кеш - ubiquity item local version

• Уведомления - есть

• notification

• Конфликты - автоматически

• Сценарии - обширные

iCloud file storage CoreData

21

Page 22: MBLTDev15: Artemiy Sobolev, Parallels

• Размер - весь объем iCloud + публичная часть

• Кеш - срез данных в локальном контейнере +

NSCoding

• Уведомления - есть

• push notifications

• Конфликты - есть

• CKRecordSavePolicy

• Сценарии - обширные + данные между

пользователями

CloudKit

22

Page 23: MBLTDev15: Artemiy Sobolev, Parallels

Все технологии вместе

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 есть

Page 24: MBLTDev15: Artemiy Sobolev, Parallels

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

Artemiy Sobolev

[email protected]

Software Developer, Parallels Inc. c

24