AppLinks (проверенные Deeplinks) в Android не работают, когда приложение установлено из Google Play

У нас есть несколько intent-filters, определенных в AndroidManifest для deeplink. У нас также есть assetlinks.json файл, размещенный в нашем домене в нужном месте с правильными отпечатками SHA. Мы сталкиваемся со странной проблемой, когда эти ссылки на приложения открывают наше приложение напрямую без какого-либо выбора между ними, когда приложение устанавливается из Android Studio.

Это тоже желаемое поведение, но когда мы загружаем наше приложение в Google play и скачиваем оттуда, эти ссылки на приложения сначала открываются App chooser, что является нежелательным поведением.

Мы провели несколько экспериментов, например, создали разные фильтры намерений для двух разных ссылок, удалили одну ссылку и т. Д., Но это поведение осталось прежним. Также дважды проверил отпечатки SHA, они вроде бы в порядке.


person Abhishek Bansal    schedule 20.12.2019    source источник


Ответы (2)


Если вы говорите, что ваш assetlinks.json файл находится в правильном месте, а сам JSON содержит правильные утверждения. Тогда может быть две проблемы

  1. Проверьте, добавили ли вы autoVerify=true в свой AndroidManifest.xml файл для действия, в котором вы определили фильтр намерений.

  2. Еще раз проверьте SHA256 подписанного apk, чтобы убедиться, что вы используете правильный SHA256 для подписи своего apk. Вы можете проверить это с помощью команды

keytool -list -printcert -jarfile <your_signed.apk>

и убедитесь, что тот же SHA256 присутствует в вашем файле assetlinks.json.

  • Чтобы проверить, действительно ли ваше приложение разрешило ссылку на приложение, используйте команду
./adb shell dumpsys package domain-preferred-apps

Результат будет примерно таким:

Package: com.test.example
Domains: www.test.com
Status:  always : 200000000

Package: com.test.example
Domains: www.xyz.com
Status:  ask
.
.
.

Найдите имя пакета вашего приложения, затем проверьте Status для имени вашего пакета, если оно always : <some_number>, значит, ваш apk правильно проверен и ссылка на приложение должна работать нормально, в противном случае, если значение Status равно ask или undefined, то есть проблема, которую вы можно выполнить рефакторинг, выполнив вышеупомянутые шаги.

person Shahbaz Hussain    schedule 20.12.2019

Я знаю, что есть принятый ответ, но есть другой сценарий, с которым может столкнуться кто-то другой, как я.

Если при публикации в Google Play ваше приложение имеет App Signing by Google Play is enabled for this app., то при подписании apk на локальном компьютере не имеет значения, какой у вас keystore SHA256.

Вам нужно использовать SHA256 из Google Play Console - ›Relase management -› App signing - ›App signing certificate.

Изменить (2021 г.): App signing key certificate сейчас находится в другом месте:

  1. Выберите приложение в консоли.
  2. Перейдите в раздел Выпуск.
  3. В разделе Настройка выберите Целостность приложения.
person Yousif    schedule 31.12.2019
comment
Да, это решило мою проблему. Мое приложение использовало функцию подписи приложений от Google Play. Спасибо, вы спасли мне день. - person sc1013; 23.09.2020
comment
Идеальный ответ, сколько времени понадобилось Google, чтобы обнаружить изменение SHA256? - person SteMa; 20.05.2021