Как передать параметры в динамические ссылки? - PullRequest
2 голосов
/ 18 октября 2019

Как получить параметры из динамических ссылок firebase во флаттере?

Я создал короткий URL:

https://subdomain.example.com/product

, который указывает на

https://example.com/view-product

Но я хочу добавить параметр URL-запроса, например:

https://example.com/view-product?id=56

Обратите внимание, что "56 "является переменной и динамически изменяется в потоке приложения. Я не могу получить этот параметр "id".

В браузере я попытался ввести https://subdomain.example.com/product?id=56

Я получил ссылку: https://example.com/view-product

     FirebaseDynamicLinks.instance.onLink(
        onSuccess: (PendingDynamicLinkData dynamicLink) async {

      final Uri deepLink = dynamicLink?.link;

      showModalBottomSheet(context: context, builder: (context){
        return Container(
          height: 100.0,
          child: Text(deepLink.toString()),
        );
      });
      if (deepLink != null) {
        debugPrint("Link found on line: "+deepLink.queryParameters.toString());

      }
    }, onError: (OnLinkErrorException e) async {
      print('onLinkError');
      print(e.message);
    });

1 Ответ

2 голосов
/ 19 октября 2019

Я наконец-то понял это!

Я понял концепцию совершенно неправильно.

На данный момент существует 4 способа создания динамических ссылок.

1) Firebase Console
2) Manually
3) Rest API
4) Dynamic Link Builder API on iOS and Android 

Что я делал неправильно, так это то, что я создал https://subdomain.example.com/product динамическую ссылку из консоли Firebaseи проверял его с помощью ссылки, созданной вручную.

2-й метод (вручную) гораздо эффективнее, если вам нужно связать динамический контент с ссылками на ваш сайт.

https://your_subdomain.page.link/?link=your_deep_link&apn=package_name[&amv=minimum_version][&afl=fallback_link]

Вышеупомянутая стандартная ручная процедура для создания динамических ссылок.

Позволяет сломать вышеупомянутую ссылку, чтобы она выглядела менее пугающей:

  • https://your_subdomain.page.link ==> Это просто ваш поддомен, который вы зарегистрировали на консоли Firebase. В нашем случае это https://subdomain.example.com

  • link = your_deep_link ==> your_deep_link - это, по сути, ваша глубокая ссылка (ссылка, которую вы хотите открыть, существует на вашем сервере, она может содержать все необходимые параметры). В нашем случае это https://example.com/view-product?id=56. Но обратите внимание, что эта ссылка должна быть встроена в URL-адрес, поэтому сначала ее нужно кодировать в urlen-коде. Для этого используйте любой кодировщик URL. Результирующая закодированная строка становится

https% 3A% 2F% 2Fexample.com% 2Fview-product% 3Fid% 3D56

  • apn = имя_пакета ==> имя вашего соответствующего пакета для IOS или Android

  • [& amv =imum_version] ==> "[]" представляют это как необязательные параметры. Этот параметр является минимальным номером версии вашего приложения, которое, по вашему мнению, должно отвечать вашему приложению на эту динамическую ссылку (0, если вы хотите, чтобы все версии поддерживали)

  • [& afl = fallback_link] ==> ==> «[]» представляют это как необязательные параметры. Это резервный URL-адрес, снова URL-адрес закодирован. Это может быть ссылка на ваш магазин игр для Android.

Итак, наша последняя динамическая ссылка выглядит так:

https://subdomain.example.com/?link=https%3A%2F%2Fexample.com%2Fview-product%3Fid%3D56&apn=com.example&amv=0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...