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

np8igboo  于 2023-05-18  发布在  Flutter
关注(0)|答案(2)|浏览(245)

我尝试添加动态链接到我的flutter android应用程序(未发布),这是调试模式,并在物理设备上运行。配置firebase,firebase控制台中的动态链接。除了一个以外,一切都在正常工作。当deeplink(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/是我的深度链接。当这个链接被点击从移动的,它总是打开网站,而不是应用程序。

fykwrbwg

fykwrbwg1#

您需要将此intent-filter添加到清单中的第一个打开Activity中,

<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>

这是第一个打开Activity,因为它有intent-filter,其中包含LAUNCHER类别,这意味着您的应用将从该Activity开始,因此您需要添加我上面提供的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

exdqitrt

exdqitrt2#

对我来说,AndroidManifest.xml中的packageName不正确
https://docs.flutter.dev/cookbook/navigation/set-up-app-links#package-name

相关问题