Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

373 views

Published on

Мы активно используем DeepLink’и в наших приложениях, как в push-уведомлениях, так и в ответах от API. В докладе я расскажу о том, как мы обрабатываем DeepLink’и для показа экранов из разных уголков приложения и для невидимых пользователю вещей.

Встреча iOS-разработчиков @ Avito #2 - 24 сентября 2016

Published in: Internet
  • Be the first to comment

  • Be the first to like this

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

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

×