firebase - 为什么 Firebase 动态链接总是空的?

标签 firebase flutter dart firebase-dynamic-links

我通过 class DynamicLinkService 中的 createDynamicLink 创建了一个动态链接,之后我使用 retrieveDynamicLink 读取链接从android浏览器打开的,但是它打印它是空的,因此它不进入if并且不推送到if内的另一个路由

class DynamicLinkService {
  Future<void> retrieveDynamicLink(BuildContext context) async {
    try {
      final PendingDynamicLinkData? data =
          await FirebaseDynamicLinks.instance.getInitialLink();
      final Uri? deepLink = data?.link;
      print("deepLink: $deepLink");

      if (deepLink != null) {
        print("deepLink If: $deepLink");
        String deepLinks = deepLink.toString();
        Navigator.of(context).push(MaterialPageRoute(
            builder: (context) => linkInvitacionScreen(deepLinks)));
      }
    } catch (e) {
      print(e.toString());
    }
  }

  Future<String> createDynamicLink(String groupID) async {
    final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://notforget.page.link/',
      link: Uri.parse(
          'https://notforget.com/groupid?$groupID'),
      androidParameters: const AndroidParameters(
        packageName: 'com.example.not_forget_flutter',
        minimumVersion: 1,
      ),
    );

    final ShortDynamicLink shortDynamicLink =
        await FirebaseDynamicLinks.instance.buildShortLink(parameters);
    final Uri shortUrl = shortDynamicLink.shortUrl;

    print(shortUrl);
    return shortUrl.toString();
  }
}

AndroidManifest 的意图过滤器

<activity
        android:name=".MainActivity"
        android:exported="true"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">
        <meta-data
          android:name="io.flutter.embedding.android.NormalTheme"
          android:resource="@style/NormalTheme"
          />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        <!-- Deep linking -->
        <meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" android:host="notforget.page.link" />
            <data android:scheme="https" />
        </intent-filter>

    </activity>

我尝试了各种解决方案,但没有一个让我在 deeplink 中获得值(value),我做错了什么?,谢谢。

最佳答案

将您的主机从 android:host="notforget.page.link"替换为 android:host="notforget.page.link"

关于firebase - 为什么 Firebase 动态链接总是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71443090/

相关文章:

android - Firebase Analytics,无法查看事件中传递的值

android - 使用 Firebase Cloud 函数获取当前日期和时间

flutter - 无法访问 'android.arch.lifecycle.LifecycleOwner',它是 'com.ex.app.MainActivity' 的父类(super class)型

flutter - 基于字符串中唯一字符的Flutter-Conditional格式。可能吗?

generics - 为什么有状态的小部件在flutter中定义为两个类?

python - 无法使用 python 3.72 连接 firebase

javascript - 增量 ID 并将数据推送为数字 - 谷歌 Firebase 和 React Native

flutter - 如何让 Flutter 应用根据不同的屏幕尺寸做出响应?

firebase - 如何在 Firestore 文档 Flutter 中将数据添加到 map

list - 排序列表 flutter