【问题标题】:Flutter Firebase dynamic links on IOS not working: [Firebase/Analytics][I-ACS023001] Deep Link does not contain valid required paramsIOS 上的 Flutter Firebase 动态链接不起作用:[Firebase/Analytics][I-ACS023001] Deep Link does not contain valid required params
【发布时间】:2021-10-28 23:17:30
【问题描述】:

我正在尝试在我的 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 && 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 && ownerUid != null) {
          _inviteCouponBloc
              .add(NewUserInviteCouponEvent(uid: uid, ownerUid: ownerUid));
        } else {
          print('firebase uid is null');
        }
      }
    }
  }

我打电话给initDynamicLinks()initState()

生成的动态链接(短)如下所示:https://myapp.page.link/Df6MA2Xf34CTENgs9 但是在IOS中,一些日志显示了IOS如何获取动态链接链接这个

"iOS handleLink: https://myapp.page.link/?link=https://invite.friends.myapp/invite_from?uid%3D66kWqpCU1ddHfErvtyucOHK3KoI3&apn=com.example.myapp&isi={app store id}&ibi=com.example.myappios&cid=2464839987823306368&_osl=https://myapp.page.link/ryZWzXFzVqY3sjE4A&_fpb=CJsFEPcCGgVrby1rcg==&_cpt=cpit&_iumenbl=1&_iumchkactval=1&_plt=981&_uit=2105&_cpb=1"

我该如何解决这个问题?

注意
我有不同的 ios 和 android 捆绑 ID。
android 捆绑包 ID:com.example.myapp
ios bundle id: com.example.myappios

我填写了 firebase 控制台上的每个输入。

此外,当我生成动态链接时会出现警告:
[Android 应用 'com.example.myappios' 缺少 SHA256。应用程序未启用 AppLinks。 [https://firebase.google.com/docs/dynamic-links/debug#android-sha256-absent],

iOS 应用“com.example.myapp”缺少应用 ID 前缀。应用程序未启用 UniversalLinks。 [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]]

编辑

来自dynamicLink?.link
await FirebaseDynamicLinks.instance.getInitialLink()?.link 的变量deepLink 为空

【问题讨论】:

    标签: firebase flutter firebase-dynamic-links


    【解决方案1】:

    检查外部 API 或服务是否正在修改您的 url。

    在我的例子中,支付 api 修改了 url,iOS 设备崩溃了。

    【讨论】:

      猜你喜欢
      • 2022-12-27
      • 1970-01-01
      • 2020-08-27
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 2021-06-24
      • 1970-01-01
      相关资源
      最近更新 更多