Как получить доступ и передать параметры в модули приложения Android Instant

с обычными установленными приложениями можно использовать технику Внешняя Ссылка для того, чтобы не только открыть конкретное приложение из URL-адреса, но и перенаправить его в определенный раздел/функцию, такую как конкретный пост Facebook или конкретные координаты на карте.

поскольку я прочитал, что с Instant Apps это будет невозможно, потому что ссылки уже указывают на конкретный модуль для загрузки и запуска, как можно было бы получить доступ не только к указанному модуль, но и передать ему некоторые параметры?

например:

Это ссылка, по которой будет загружен модуль только для просмотра моего картографического приложения:"www.myinstantappexample.com/onlyviewmap"

Если я хочу, чтобы он указывал на определенный набор координат, как будет составлена ссылка? Это будет такой: "www.myinstantappexample.com/onlyviewmap/?x=0.000&y=0.000" ?

из того, что я смог найти google не учитывать этот аспект и я действительно не могу обернуть мою голову вокруг него.

3 ответов


мгновенные приложения и глубокое связывание

Мгновенное Приложения полагайтесь на ссылки приложений для работы, а ссылки на приложения-это только один тип глубокой ссылки. Так что глубокая связь по-прежнему возможна для мгновенных приложений, и на самом деле абсолютно критическое значение к тому, как они функционируют. Тем не менее, схема URI deep linking (которая по-прежнему очень распространена в приложениях для Android) - это не поддержал.

разница между обычным приложением и мгновенным приложением заключается в том, что устройство будет загружать только одно действие в ответ на ссылку приложения, которую пользователь нажимает, вместо того, чтобы загружать полный пакет через Play Store. Это более плавный опыт для пользователя, но базовая технология работает таким же образом.

Передача Пользовательских Параметров

если пользователь щелкает URL-адрес с поддержкой ссылок на приложения, например http://www.myinstantappexample.com/onlyviewmap/?x=0.000&y=0.000, вы получите всю строку обратно в приложение после его открытия. Вам придется разобрать x и y сами переменные, но они будут вам доступны. Что-то вроде этого:--17-->

Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
    String uri = this.getIntent().getDataString();
    Log.i("MyApp", "Deep link clicked " + uri);
}

вам просто нужно манипулировать uri значением, чтобы найти то, что вам нужно.

альтернативный подход к пользовательским параметрам

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

branch.link({
    tags: [ 'tag1', 'tag2' ],
    channel: 'facebook',
    feature: 'dashboard',
    stage: 'new user',
    data: {
        x: '0.000',
        y: '0.000',
        '$desktop_url': 'http://myappwebsite.com',
        '$ios_url': 'http://myappwebsite.com/ios',
        '$ipad_url': 'http://myappwebsite.com/ipad',
        '$android_url': 'http://myappwebsite.com/android',
        '$og_app_id': '12345',
        '$og_title': 'My App',
        '$og_description': 'My app\'s description.',
        '$og_image_url': 'http://myappwebsite.com/image.png'
    }
}, function(err, link) {
    console.log(err, link);
});

взамен вы получаете URL, как http://myappname.app.link/iDdkwZR5hx, а затем внутри приложения после нажатия ссылки вы получите что-то, что выглядит следующим образом:

{
    tags: [ 'tag1', 'tag2' ],
    channel: 'facebook',
    feature: 'dashboard',
    stage: 'new user',
    data: {
        x: '0.000',
        y: '0.000'
    }
}

если я хочу, чтобы он указывал на определенный набор координат, как будет составлена ссылка?

это зависит от вас, как включить любую дополнительную информацию в URL. Это может быть через Параметры URL или в самом пути. Например.

https://www.myinstantappexample.com/location/2/user/5 https://www.myinstantappexample.com/onlyviewmap/?x=1.2&y=3.4

затем вы анализируете URL-адрес в получающем Activity. The Uri класса включает в себя ряд вспомогательных методов, таких как getQueryParameter() и getPathSegments() чтобы сделать это проще.

например, чтобы разобрать этот URL:

https://www.myinstantappexample.com/onlyviewmap/?x=1.2&y=3.4

вы бы сделали что-то подобное в своем Activity:

Uri uri = getIntent().getData();
String x;
String y;
if (data != null) {
  x = uri.getQueryParameter("x"); // x = "1.2"
  y = uri.getQueryParameter("y"); // y = "3.4"
}
if (x != null && y != null) {
  // do something interesting with x and y
}

для этого вам нужно использовать "App links assistant" в Инструменты - > App Ссылки Помощник

затем проверьте свои ссылки и в селекторе путей убедитесь, что выбран параметр "pathPrefix".

затем в нижней части метода OnCreate вашей деятельности (который связан со ссылкой, которую вы недавно отредактировали) добавьте этот код:

Intent appLinkIntent = getIntent();
String appLinkAction = appLinkIntent.getAction();
Uri appLinkData = appLinkIntent.getData();
// then use appLinkData.getQueryParameter("YourParameter")

вы можете проверить и отладить это, используя опцию "editConfigurations", просто откройте это окно и отредактируйте модуль instantApp (тот, который запущен со ссылкой, которую вы недавно редактировали) и в поле URL добавьте необходимые параметры URL. (тогда просто запустите этот модуль: D)

надеюсь, это будет полезно.