"DeepLink’и в Avito" Артём Разинов (Avito)

  • View
    196

  • Download
    13

  • Category

    Internet

Preview:

Citation preview

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