"deeplink’и в avito" Артём Разинов (avito)
Post on 15-Apr-2017
197 Views
Preview:
TRANSCRIPT
1
Deep Linking in AvitoArtyom Razinov, lead iOS developer
2План
• Что такое диплинкинг и зачем
• Перенос логики навигации на сервер
• Какие задачи решались
• Реализация
3
Что такое диплинкинг?https://www.google.ru/#q=Что+такое+диплинкинг%3F
presentation://
presentation://answers/search?q=Что+такое+диплинкинг%3F
4Для чего нужны диплинки?• Связывание сайта и мобильного приложения
5
Open URLПереход к размещению
нового объявления
6Для чего нужны диплинки?• Связывание сайта и мобильного приложения
• Push-уведомления
7Messenger
8
Push NotificationsПереход к экрану чата
9Для чего нужны диплинки?• Связывание сайта и мобильного приложения
• Push-уведомления
• Управление навигацией из других источников, например, force-touch
10
Force TouchПереход к размещению
нового объявления
11Для чего нужны диплинки?• Связывание сайта и мобильного приложения
• Push-уведомления
• Управление навигацией из других источников, например, force-touch
• Перенос логики навигации на сервер
12
Перенос логики навигации на сервер
13Перенос логики навигации на сервер
• Что это значит?
• Зачем это нужно?
• Примеры решенных задач
• Реализация в мобильном приложении
14title: "Продать быстрее" action: "app://sell/faster?id=1"
15
Эти кнопки
16API: status: "inactive"
Apps: switch status { case .inactive: ....................... }
17API: actions: ["activate", "edit", "delete"]
Apps: switch action { case .activate: ....................... }
18API: action: { title: "Редактировать" uri: "app://edit?id=42" }
Apps: handleDeepLink(uri)
19
Удачный опыт применения диплинкинга
(смотрите на синие кнопки внизу, а не на девушку)
20
Отключенный мессенджерПользователь отключил возможность писать ему
сообщения
21
Платный доступ
Тестовый регион с платным доступом
22
Списание с пакета
Кнопка написать ссылается на списание из пакета
23
Обновление данных
Объявление добавлено в избранное
24
Обновление данных
Кнопка написать ссылается на мессенджер, объявление
добавлено в избранное
25
Разовая оплата
Доступна кнопка покупки
26
Доступ получен
Кнопка написать ссылается на мессенджер
27Deeplinks Deeplinks everywhere
28
Реализация
29Универсальный механизм обработки
Диплинк
Диплинк
Диплинк
Диплинк
Диплинк
Экран
30VIPER
Assembly
PresenterInteractor View
SomeViewControllerModule
Router
31
Как универсально обрабатывать диплинки?
32VIPER
Assembly
PresenterInteractor View
SomeViewControllerModule
Router ?
33Первая реализация
DeepLinkUri: Сырая ссылка
DeepLink: Обработанная ссылка DeepLinkOrigin: Источник
34Источник ссылки
35Первая реализация
DeepLinkUri: Сырая ссылка
DeepLink: Обработанная ссылка DeepLinkOrigin: Источник
36DeepLink
37DeepLinkHandler
38DeepLinkHandlerFactory
39
40
41
42
43Советы1. Слабая связанность кода 2. Разделение ответственности 3. Абстрагирование от навигации, отсутсвие побочных
эффектов со стороны системы навигации
44
Как описывать диплинки?
45Первое решение
46Первое решение
47Deep Links Specification
48DeepLinksSpecification.swift
49Как описывать диплинки
1. Декларативный стиль 2. Описание в одном месте 3. Простота
50
Диплинки на действия
51Универсальная обратная связь
Диплинк
Диплинк
Диплинк
Диплинк
Диплинк
Экран
Экран
Экран
Экран
Экран
52
Механизм обратной связи
53Виды обратной связи
• Запуск и остановка прелоадера
• Показ сообщений о результатах
• Закрытие текущего экрана
• Обновление данных текущего экрана
54Виды обратной связи
55InternalDeepLinkHandler
56Настройка презентером
57
DeepLinkHandlingActions
Presenter
DeepLinkHandlerDelegateDeepLinkHandler
InternalDeepLinkHandler
58
Deep Link HandlerРедактирование
объявления
59АвторизацияСтарт процессаСтоп процесса
Получение данных для редактирования
Показ экранаОбработка модификации
данных на сервереЗавершение флоу
60Заключение
1. Диплинкинг - это удобно 2. Диплинкинг - это реально 3. Внедрение управляемой навигации - это не только
модно, молодежно и весело, это может быть выгодно бизнесу
61
Спасибо за внимание! Есть вопросы?
email: arazinov@avito.ru skype: artyom.razinov
top related