flutter如何配置app links

在Flutter项目中配置App Links时遇到问题,按照官方文档操作后仍然无法正常跳转。具体步骤已配置assetlinks.json文件并部署到网站根目录,AndroidManifest.xml中也添加了intent-filter,但点击链接时还是直接打开浏览器而不是跳转到App。请问还需要检查哪些配置?iOS和Android的配置是否有区别?有没有完整的成功案例可以参考?

2 回复

AndroidManifest.xml 中配置 intent-filter,设置 autoVerify 为 true,并关联域名。iOS 需在 Associated Domains 中添加 applinks:yourdomain.com,并上传 apple-app-site-association 文件到服务器。

更多关于flutter如何配置app links的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中配置 App Links(Android)和 Universal Links(iOS)可让应用通过 HTTP/HTTPS 链接直接启动。以下是配置步骤:

Android 配置(App Links)

  1. 修改 android/app/src/main/AndroidManifest.xml: 在 <activity> 标签内添加 intent-filter:

    <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:scheme="https"
            android:host="yourdomain.com"
            android:pathPrefix="/path" />
    </intent-filter>
    
  2. 创建 assetlinks.json 文件: 在域名根目录(如 https://yourdomain.com/.well-known/assetlinks.json)放置以下内容:

    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target": {
        "namespace": "android_app",
        "package_name": "com.example.app",
        "sha256_cert_fingerprints": ["YOUR_APP_SHA256_FINGERPRINT"]
      }
    }]
    

    获取 SHA256 指纹:

    keytool -list -v -keystore your-release-key.keystore
    

iOS 配置(Universal Links)

  1. 修改 ios/Runner/Runner.entitlements: 添加以下内容:

    <dict>
      <key>com.apple.developer.associated-domains</key>
      <array>
        <string>applinks:yourdomain.com</string>
      </array>
    </dict>
    
  2. 创建 apple-app-site-association 文件: 在域名根目录(如 https://yourdomain.com/.well-known/apple-app-site-association)放置:

    {
      "applinks": {
        "details": [{
          "appIDs": ["TEAMID.bundle.identifier"],
          "components": [{
            "/": "/path/*",
            "comment": "匹配指定路径"
          }]
        }]
      }
    }
    

    注意:此文件不能包含 .json 扩展名,且需通过 HTTPS 访问。

Flutter 代码处理

使用 uni_links 包处理链接:

  1. 添加依赖

    dependencies:
      uni_links: ^0.5.1
    
  2. 监听链接

    import 'package:uni_links/uni_links.dart';
    
    void initUniLinks() {
      getInitialLink().then((initialLink) {
        // 处理冷启动链接
      });
    
      linkStream.listen((String? link) {
        // 处理应用运行时的链接
      });
    }
    

验证配置

完成以上步骤后,用户点击 https://yourdomain.com/path/... 链接时,应用将自动启动(如已安装)。

回到顶部