我使用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
在你的应用程序中,你需要遵循以下步骤:
-
在应用级
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" } }
-
活动下的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文件
我有两个问题造成这个问题:
- 我有子域,我忘了把它添加到我的清单 的
- 我还没有提交我的SHA256到Firebase控制台
host
我的完整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