В некоторых приложениях навигация между экранами осуществляется через диплинки, а не хардкодится в приложении xml-графом или просто кодом
Теоретические описание:
открываешь ссылку — открывается страница в приложении
Практическое описание:
в манифесте описываются диплинки, которые собирается перехватывать приложение
через Intent их получает Activity и выбирает Fragment, который нужно открыть
Плюсы подхода:
• гибкость
не нужна хардкодить, какой экран открывает кнопка. можно прислать с бека диплинк, который будет открываться по нажатию кнопки
• возможность открывать сразу нужную страницу приложения из других приложений
например, отправить диплинк пользователю в смс или зашить в рекламный баннер
• можно на беке строить актуальный граф экранов
• можно передать параметры в диплинке
например, "sheme://testPage?couponCode=123"
удобно для аналитики маркетинга и передачи параметров с экрана на экран/устройства на устройство
• из коробки получаем открытие любого экрана по QR-коду
Минусы:
• нужно следить за тем, чтобы на некоторые экраны были доступ только из своего приложения
я бы не хотел, чтобы мошенник мог прислать диплинк на экран "автоматически отправить все фотографии с устройства на номер..."
• нужно следить за тем, что Activity возвращает через onActivityResult
другое приложение может открыть диплинк, а после получить секретные данные в onActivityResult
• бывают сложные сценарии
например, некоторые экраны должны открываться только с предыдущего экрана, а не из любой точки приложения
например, страница ввода кода из смс для авторизации
• никто не запретит другим приложениям-мошенникам перехватить диплинк
пользователь увидит диалог "через какое приложение открыть ссылку?" и выберет не вас
....
обсуждение — https://t.me/dolgo_polo_dev/100