Диплинки в React Native
Вопрос
Расскажите, как настроить и протестировать диплинки в React Native-приложении.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Своя схема и проверенные https-ссылки: App Links (`assetlinks.json`) и Universal Links (`apple-app-site-association`)
Конфигурация `linking`: префиксы, пути, вложенные навигаторы, разбор параметров
Холодный старт (начальный URL) и тёплый (событие `url`)
Защищённые экраны: отложенный переход после входа
Тестирование: `adb shell am start`, `xcrun simctl openurl`, `npx uri-scheme`
Ссылки из уведомлений тем же механизмом
Что могут спросить следом
- Почему ссылка открывает браузер, а не приложение?
- Как обработать неизвестный путь?
Разбор
Образцовый ответ: «Использую два вида ссылок. Своя схема myapp:// проста, но её может перехватить другое приложение, поэтому для публичных ссылок нужны проверенные https: на Android App Links с файлом assetlinks.json и отпечатком ключа подписи, на iOS Universal Links с Associated Domains и apple-app-site-association. В JS настраиваю linking: префиксы и сопоставление путей, учитывая вложенные навигаторы, и функции разбора параметров. React Navigation сам обрабатывает и холодный старт, и событие url для работающего приложения. Неизвестные пути веду на экран «не найдено». Если экран требует входа, сохраняю адрес и перехожу после авторизации. Тестирую через adb shell am start и xcrun simctl openurl. Если ссылка открывает браузер, первым делом проверяю файлы на домене и отпечаток ключа: при Play App Signing нужен ключ Google»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.