Динамические ссылки Flutter Firebase на IOS не работают: [Firebase/Analytics][I-ACS023001] Глубокая ссылка не содержит допустимых требуемых параметров

# #firebase #flutter #firebase-dynamic-links

Вопрос:

Я пытаюсь использовать динамические ссылки в своем приложении flutter для приглашения новых пользователей.
Он отлично работает на Android, но не работает на IOS.
сообщение:

 2021-08-30 15:31:09.260470 0900 Runner[9221:902508] 8.3.0 - [Firebase/Analytics][IACS023001] Deep Link does not contain valid required params. URL params: {  
    "_cpb" = 1;  
    "_cpt" = cpit;  
    "_fpb" = "CJsFEPcCGgVrby1rcg==";  
    "_iumchkactval" = 1;  
    "_iumenbl" = 1;  
    "_osl" = "https://myapp.page.link/ryZWzXFzVqY3sjE4A";  
    "_plt" = 981;  
    "_uit" = 2105;  
    apn = "com.example.myapp";  
    cid = 2464839987823306368;  
    ibi = "com.example.myappios";  
    isi = app store id;  
    link = "https://invite.friends.myapp/invite_from?uid={uid_string}";  
}
 

Мои коды:

Создание динамических ссылок

 String? uid = FirebaseAuth.instance.currentUser?.uid;
                  final DynamicLinkParameters parameters =
                      DynamicLinkParameters(
                    uriPrefix: 'https://potendogs.page.link',
                    link: Uri.parse(
                        'https://invite.friends.myapp/invite_from?uid=$uid'),
                    androidParameters: AndroidParameters(
                      packageName: 'com.example.myapp',
                    ),
                    iosParameters: IosParameters(
                      bundleId: 'com.example.myappios',
                      appStoreId: 'app store id',
                    ),
                  );
                  final ShortDynamicLink shortUrl =
                      await parameters.buildShortLink();
                  Share.share('invite_message'.tr()   shortUrl.shortUrl.toString());
 

Получение динамических ссылок

 void initDynamicLinks() async {
    FirebaseDynamicLinks.instance.onLink(
        onSuccess: (PendingDynamicLinkData? dynamicLink) async {
      final Uri? deepLink = dynamicLink?.link;

      if (deepLink != null) {
        String? uid = FirebaseAuth.instance.currentUser?.uid;
        String? ownerUid = deepLink.queryParameters['uid'];
        if (uid != null amp;amp; ownerUid != null) {
          _inviteCouponBloc
              .add(NewUserInviteCouponEvent(uid: uid, ownerUid: ownerUid));
        }
      }
    }, onError: (OnLinkErrorException e) async {
      print('OnLinkError');
      print(e.message);
      print(e.stacktrace);
    });

    final PendingDynamicLinkData? data =
        await FirebaseDynamicLinks.instance.getInitialLink();
    final Uri? deepLink = data?.link;

    if (deepLink != null) {
      if (widget.isNewUser) {
        String? uid = FirebaseAuth.instance.currentUser?.uid;
        String? ownerUid = deepLink.queryParameters['uid'];
        if (uid != null amp;amp; ownerUid != null) {
          _inviteCouponBloc
              .add(NewUserInviteCouponEvent(uid: uid, ownerUid: ownerUid));
        } else {
          print('firebase uid is null');
        }
      }
    }
  }
 

I call initDynamicLinks() in initState()

The Generated dynamic link(short) look like this: https://myapp.page.link/Df6MA2Xf34CTENgs9
But in IOS, some log shows how IOS get dynamic links link this

 "iOS handleLink: https://myapp.page.link/?link=https://invite.friends.myapp/invite_from?uid=66kWqpCU1ddHfErvtyucOHK3KoI3amp;apn=com.example.myappamp;isi={app store id}amp;ibi=com.example.myappiosamp;cid=2464839987823306368amp;_osl=https://myapp.page.link/ryZWzXFzVqY3sjE4Aamp;_fpb=CJsFEPcCGgVrby1rcg==amp;_cpt=cpitamp;_iumenbl=1amp;_iumchkactval=1amp;_plt=981amp;_uit=2105amp;_cpb=1"
 

как я могу решить эту проблему?

записка
У меня разные идентификаторы пакетов ios и android.
идентификатор пакета android: com.пример.myapp идентификатор пакета
ios: com.пример.myappios

Я заполнил все входы на консоли firebase.

кроме того, появляется предупреждение, когда я создаю динамические ссылки, такие как:
[В приложении для Android «com.example.myappios» не хватает SHA256. Ссылки на приложения не включены для приложения. [https://firebase.google.com/docs/dynamic-links/debug#android-sha256-absent],

В приложении iOS «com.example.myapp» отсутствует префикс идентификатора приложения. Универсальные ссылки не включены для приложения. [https://firebase.google.com/docs/dynamic-links/debug#ios-team-id-absent],

В этом домене нет конфигурации для предотвращения фишинга https://myapp.page.link. Настройте шаблоны URL-адресов в белый список в консоли динамических ссылок Firebase. [https://support.google.com/firebase/answer/9021429]]

Редактировать

Переменная deepLink от dynamicLink?.link и
await FirebaseDynamicLinks.instance.getInitialLink()?.link равно нулю

Ответ №1:

Проверьте, изменяет ли внешний API или служба ваш URL-адрес.

В моем случае платежный api изменил URL-адрес, и устройства iOS отказали.