firebase_dynamic_links在Flutter中不能在Android版本13上工作 &



我使用firebase_dynamic_links 5.0.11和Flutter 3.3.9。我确实通过firebase实现了动态链接,它在Android版本12或更低版本上的工作正如预期的那样。这个问题只是在Android版本13,链接不能打开应用程序。我确实为android 13找到了一些解决方案,比如向Firebase添加SHA-256密钥,并添加android:autoVerify="true"AndroidManifest。但这并不能解决问题。有人知道解决方法吗?

检查您的舱单中是否有

<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和更低的版本上是可以的。有了这个意图过滤器

通过移动intent-filter问题得到了解决活动.

我改成了

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

对于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. 活动下的AndroidManifest.xml代码

    意图过滤器android:自动检验="true"比;//如果你正在使用调味品

如果你不用任何调味料,你可以这样尝试只需在活动

下添加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>
<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添加autoverify=trueandroid manifest文件

我有两个问题造成这个问题:

  1. 我有子域,我忘了把它添加到我的清单
  2. host
  3. 我还没有提交我的SHA256到Firebase控制台

我的完整URL从Firebase动态链接有子域如下: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。该应用程序未启用applink

相关内容

  • 没有找到相关文章

最新更新