带有 flutter 的 Firebase 动态链接:深层链接 URL 无法打开应用程序

问题描述 投票:0回答:2

我尝试将动态链接添加到我的 flutter android 应用程序(未发布),该应用程序处于调试模式并在物理设备上运行。在 firebase 控制台中配置的 firebase、动态链接。一切都按预期工作,除了一个。当直接从任何地方点击深层链接(https://www.mywebsite.com/deep-link-page)时,它不会打开应用程序。单击动态链接 https://myapp.page.link 按预期打开应用程序。

 final DynamicLinkParameters parameters = DynamicLinkParameters(
  uriPrefix: 'https://freshakaka.page.link',
  link: Uri.parse('https://freshakaka.page.link/helloworld'),
  androidParameters: AndroidParameters(
    packageName: 'com.freshakaka.flutter',
    minimumVersion: 0,
  ),
  dynamicLinkParametersOptions: DynamicLinkParametersOptions(
    shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
  ),
  iosParameters: IosParameters(
    bundleId: 'com.google.FirebaseCppDynamicLinksTestApp.dev',
    minimumVersion: '0',
  ),
);

如图所示 - https://kannadaclub.com/2019/10/17/seltos-50k-bookings/ 是我的深层链接。当从手机点击这个链接时,它总是打开网站,而不是应用程序。

android firebase flutter deep-linking firebase-dynamic-links
2个回答
9
投票

您需要在清单中的第一个打开活动中添加此

intent-filter

<activity android:name="your default activity">
      
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="freshakaka.page.link"
                android:scheme="https" />
        </intent-filter>

    </activity>

详细说明:

需要在项目中搜索AndroidManifest.xml,找到后会看到类似这样的内容

   <activity
        android:name=".MainActivity"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

这是第一个打开的活动,因为它有包含

intent-filter
类别的
LAUNCHER
,这意味着您的应用程序将从该活动开始,所以您需要添加我上面提供的
intent-filter
,像这样

       <activity
        android:name=".MainActivity"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="freshakaka.page.link"
                android:scheme="https" />
        </intent-filter>

    </activity>

此外,您可以查看此以获得更明确的解释

https://firebase.google.com/docs/dynamic-links/android/receive


0
投票

对我来说,AndroidManifest.xml 中的 packageName 不正确

https://docs.flutter.dev/cookbook/navigation/set-up-app-links#package-name

© www.soinside.com 2019 - 2024. All rights reserved.