【问题标题】:Firebase dynamic link with flutter: Deep link URL doesnt open app带有颤动的 Firebase 动态链接:深层链接 URL 未打开应用程序
【发布时间】:2020-07-23 22:44:50
【问题描述】:

我尝试将动态链接添加到我的 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/ 是我的深层链接。当从手机点击此链接时,它总是打开网站,而不是应用程序。

【问题讨论】:

    标签: android firebase flutter deep-linking firebase-dynamic-links


    【解决方案1】:

    您需要在清单中的第一个打开活动中添加此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>
    

    这是第一个打开的 Activity,因为它具有包含 LAUNCHER 类别的 intent-filter,这意味着您的应用将从该 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

    【讨论】:

    • 我是 Flutter 的新手,请您详细说明一下您的答案..
    猜你喜欢
    • 2022-12-03
    • 2021-06-16
    • 1970-01-01
    • 2016-10-03
    • 2021-08-07
    • 2016-05-10
    • 2016-10-21
    • 1970-01-01
    • 2019-11-04
    相关资源
    最近更新 更多