You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中uniLinks包Deep Link在真机上失效问题求助

1. 检查App Links验证配置(关键)

你配置了android:autoVerify="true",这意味着必须完成App Links域名验证才能在真机生效:

  • 必须在域名payment.mlggrand.ir的.well-known目录下放置assetlinks.json文件,路径为https://payment.mlggrand.ir/.well-known/assetlinks.json
  • 文件内容需包含应用包名和真机签名的SHA256指纹,格式示例:
[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.your.app.package",
      "sha256_cert_fingerprints": ["AA:BB:CC:...(你的SHA256指纹)"]
    }
  }
]
  • 验证方法:用adb命令测试跳转:
adb shell am start -a android.intent.action.VIEW -d "https://payment.mlggrand.ir" com.your.app.package

能直接打开应用说明验证生效,弹出应用选择框则说明验证未通过。

2. 补充普通Deep Link配置( fallback方案)

App Links验证不通过时,新增普通Deep Link配置保障基础跳转:
在AndroidManifest的MainActivity中添加一个独立的intent-filter(与现有App Links配置并存):

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- 自定义scheme,支持直接跳转(如 mlggrand://payment) -->
    <data android:scheme="mlggrand" android:host="payment" />
    <!-- 兼容http/https作为普通Deep Link(无需验证) -->
    <data android:scheme="https" android:host="payment.mlggrand.ir" />
</intent-filter>

此配置无需域名验证,浏览器会弹出应用选择框供用户选择跳转。

3. 确认uniLinks监听逻辑正确

确保Flutter端初始化和监听代码无遗漏:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 处理应用启动时的初始链接
  final initialLink = await getInitialLink();
  if (initialLink != null) {
    handleDeepLink(initialLink);
  }
  
  // 监听后续的链接跳转
  linkStream.listen((String? link) {
    if (link != null) {
      handleDeepLink(link);
    }
  }, onError: (error) {
    // 处理监听错误
  });

  runApp(const MyApp());
}

void handleDeepLink(String link) {
  // 这里处理你的Deep Link业务逻辑,比如路由跳转
}

同时确保MainActivity的launchMode设置为singleTop或singleTask,避免重复创建实例:

<activity
    android:name=".MainActivity"
    android:launchMode="singleTop"
    ...>

4. 核对真机签名指纹

模拟器使用debug签名,真机若用release包,签名指纹与debug不同:

  • 获取release签名SHA256:
keytool -list -v -keystore /path/to/your/release.keystore -alias your_alias

输入密钥库密码后,复制输出中的SHA256值,替换到assetlinks.json中。

5. 浏览器跳转测试注意事项

  • 避免直接在浏览器地址栏输入链接,改为点击网页中的链接(部分浏览器地址栏输入会优先打开网页);
  • 测试不同浏览器(如Chrome、Firefox),部分小众浏览器对Deep Link支持不佳;
  • 若浏览器仍不触发跳转,检查系统应用默认设置,确认你的应用已关联该域名。

内容的提问来源于stack exchange,提问作者Morteza Lotfi G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:01:28