Подтвердить что ты не робот

Android Deep linking: используйте ту же ссылку для приложения и магазина воспроизведения

У меня есть веб-сайт, который позволяет пользователю делать поисковый запрос. Задание может занять некоторое время (от нескольких минут до нескольких дней), и я бы хотел, чтобы пользователь загрузил приложение для Android и получил там ответ, отправив электронное письмо со ссылкой на пользователя.

Я хотел бы, чтобы этот механизм работал независимо от того, установлено ли у пользователя приложение или нет; другими словами:

  • Если у пользователя есть приложение, его следует открыть с помощью глубокой ссылки, содержащей аргумент идентификатора.
  • Если у пользователя нет его, он должен открыть магазин воспроизведения на странице приложения (например, https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah), позволить пользователю установить его и открыть приложение с аргументом идентификатора.

enter image description here

Есть ли способ создать ссылку, которая открывает приложение Android с аргументом, который будет работать независимо от того, установлено ли приложение или нет?

4b9b3361

Ответ 1

Это обходное решение может работать:

<data android:scheme="https"
          android:host="www.foo.com"
          android:pathPrefix="/bar" />

Теперь, если приложение установлено, URL-адрес будет пойман, и путь может быть проанализирован для извлечения части BlahBlah. Если приложение не установлено, нажмите ссылку, чтобы перенаправить пользователя в магазин Play со ссылочным URL.

enter image description here

Примечания:

  • /bar/BlahBlah был преобразован в &referrer=BlahBlah, поскольку магазин воспроизведения получает аргумент URL, а механизм глубокой ссылки работает с URL-адресами (насколько я могу судить)

Ответ 2

Вы можете попробовать использовать эту схему (для отправки пользователю):

intent://details?id=X&url=Y&referrer=Z#Intent;scheme=market;action=android.intent.action.VIEW;package=com.android.vending;end";

X: название пакета приложения

Y: Глубокая схема связи, которая должна быть определена в манифесте приложения. (Пожалуйста, ознакомьтесь с этим). Здесь они использовали этот URL в качестве примера: " http://www.example.com/gizmos ", поэтому Y следует заменить на этот URL.

Z: Это могут быть любые данные, которые вы хотите передать в приложение через Google Play. Обратите внимание, что любые передаваемые вами данные не должны быть разделены символом "&", поскольку исходные параметры сами по себе "&" разделены.

Из того, что я экспериментировал, этот URL понятен браузеру и перенаправляет вас в приложение на основе имени пакета и схемы глубоких ссылок. В противном случае вы попадете в Google Play.

PS: Google Play осуществляет трансляцию приложения. Поэтому убедитесь, что вы получаете трансляцию в приемнике.

Ответ 3

Решение Адама довольно хорошо, если вы хотите его самостоятельно создать.

Там SDK с открытым исходным кодом, который делает именно это, по отраслевым метрикам (полное раскрытие, я там работаю).

В принципе, вы устанавливаете свою схему URI на панели управления Branch, создаете ссылку с данными, которые хотите передать (в данном случае, параметры запроса, но вы решили), а SDK имеет метод с обратным вызовом, который дает вы указали параметры запроса (через установку или обычную деактивацию, щелкнув ссылку "Ветвь" ).

Ответ 4

Этот вопрос довольно старый, но также очень популярный, поэтому определенно стоит знать, что теперь этот вариант использования официально поддерживается Firebase, а именно Firebase Dynamic Links.

Он поддерживает только открытие приложения и отложенные глубокие ссылки, что означает, что после установки приложения, при запуске приложения, вы можете получить данные (ссылку), которые использовались для установки приложения.

Он построен поверх связывания приложений, поэтому вам все еще нужен тот же intent-filter что и раньше.

Короче говоря, вам нужно добавить implementation 'com.google.firebase:firebase-dynamic-links:VERSION' и получить ссылку из экземпляра класса FirebaseDynamicLinks.

Конечно, вам нужно поменять ссылки на веб-сайте на ссылки, созданные в консоли Firebase, но хорошая новость заключается в том, что эти ссылки являются "динамическими" (как следует из названия), поэтому они работают на всех системах.

Для получения подробной информации и настройки с этим вариантом использования перейдите по ссылке: https://firebase.google.com/docs/dynamic-links/use-cases/web-to-app