Flutter 中的 firebase_dynamic_links 在 Android 版本 13 上不起作用

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

我正在使用 firebase_dynamic_links 5.0.11 和 Flutter 3.3.9。我确实通过 firebase 实现了动态链接,并且它在 Android 版本 12 或更低版本上按预期工作。 问题仅在Android 13版本上,链接无法打开应用程序。 我确实找到了一些适用于 android 13 的解决方案,例如将 SHA-256 密钥添加到 Firebase 并将 android:autoVerify="true" 添加到 AndroidManifest。但他们并没有解决问题。 有人知道解决方案吗?

flutter firebase dart dynamic-linking firebase-dynamic-links
6个回答
1
投票

通过将 intent-filter 移动到 activity 中解决了这个问题。

我将其更改为:

<activity>
  
        .....

        <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="YOUR_CONTENT_LINK_DOMAIN"
            android:scheme="https"/>
        </intent-filter>

    </activity>

    <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="YOUR_CONTENT_LINK_DOMAIN"
            android:scheme="https"/>
     </intent-filter>
  
      .....

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

      .....

    </activity>

0
投票

检查您的清单中是否有

  <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="YOUR_CONTENT_LINK_DOMAIN"
                android:scheme="https"/>
        </intent-filter>

我在 Android 13 上遇到了同样的问题,但在 12 及更低版本上没问题。这个意图过滤器对我来说工作正常


0
投票

对于 Android 13 版本意图过滤器进行了一些细微的更改。我遇到了同样的问题,我用下面的代码片段解决了这个问题。

如果您在应用程序中使用

flavouring
,那么您需要按照以下步骤操作:

  1. 在应用程序级别

    build gradle
    文件下添加 Firebase 主机链接到各个风格。

     flavorDimensions "default"
     productFlavors {
        dev {
            resValue "string", "app_name", "APP_NAME-D"
            resValue "string", "dynamic_link_domain", "domain_url_dev"
            dimension "default"
            applicationIdSuffix ".dev"
    
        }
        staging {
            resValue "string", "app_name", "APP_NAME-S"
            resValue "string", "dynamic_link_domain", "domain_url_stg"
            dimension "default"
            applicationIdSuffix ".staging"
        }
    
        prod {
            resValue "string", "app_name", "APP_NAME"
            resValue "string", "dynamic_link_domain", "domain_url_prod"
            dimension "default"
        }
    }
    
  2. activity下的AndroidManifest.xml代码

    意图过滤器 android:autoVerify="true"> // 如果你使用调味料

如果你不使用任何调味料,你可以尝试这样 只需在activity下添加AndroidManifest.xml代码即可

<activity
     android:name=".MainActivity"
     android:exported="true">
    <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="DOMAIN_LINK"
          android:scheme="https"/>
    </intent-filter>
</activity>

0
投票
<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:host="${deeplinkHost}" android:scheme="https"/>
</intent-filter>

对于 Android 13,在 Android 清单文件中添加 autoverify=true


0
投票

我有两个问题导致了这个问题:

  1. 我有子域名,但我忘记将其添加到清单中的
    host
  2. 我尚未将 SHA256 提交到 Firebase 控制台

来自 Firebase 动态链接的完整 URL 有子域,如下所示:https://customer.yourOwnDomain.com

所以你应该将你的子域名包含在

host
中,你也可以使用通配符
*
使其更加安全

        <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="*.yourOwnDomain.com" // your domain + subdomain, not domain.page.link !!!
                android:scheme="https"/>
        </intent-filter>

您还必须将 SHA256 添加到 Firebase 控制台。请遵循此文档:Android 应用程序缺少 SHA256。该应用程序未启用 AppLinks。


0
投票

我遇到了同样的问题,我的问题已通过添加解决。

android:autoVerify="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:host="sharecirclesapp.page.link"
              android:scheme="https"/>           
</intent-filter>

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