网页跳转App,Universal Links(iOS)和 App Links(Android) 如何设置

要在 iOS 和 Android 上使用 Universal LinksApp Links 进行跳转,您需要按照不同平台的具体要求进行配置。以下是详细的设置步骤和解释:


步骤:

  1. 注册并设置应用的 associatedDomains

    您需要在 iOS 应用的 Capabilities 中启用 Associated Domains。这将允许您的应用处理指定的 Universal Links。

    • 打开 Xcode 项目。

    • 选择您的项目,点击 Signing & Capabilities

    • 点击 + Capability ,并添加 Associated Domains

    • 在 Associated Domains 中添加 applinks 前缀的域名。例如:

      makefile 复制代码
      applinks:yourdomain.com

      这意味着,您的应用将处理以 yourdomain.com 为域名的 Universal Links。

  2. 创建并上传 apple-app-site-association 文件:

    您需要在您的网站的根目录中提供一个 JSON 文件,名为 apple-app-site-association。该文件应包含您希望与 iOS 应用关联的域名和路径。示例如下:

    css 复制代码
    {
      "applinks": {
        "details": [
          {
            "appID": "TEAM_ID.bundleID",
            "paths": ["/productDetails/*", "/otherpath/*"]
          }
        ]
      }
    }
    • appID:由 Apple 分配的唯一标识符,格式为 TEAM_ID.bundleID
    • paths:您希望处理的 URL 路径模式(使用通配符支持多个路径)。

    上传此文件到您的网站的根目录(https://yourdomain.com/apple-app-site-association)。

  3. 在应用中处理 Universal Link:

    在您的 iOS 应用中,您需要在 AppDelegate 中处理 Universal Link 的打开事件。

    例如:

    swift 复制代码
    import UIKit
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
            // 处理 Universal Link 跳转的 URL
            if url.host == "productDetails" {
                let productId = url.queryParameters?["productId"]
                // 这里可以处理相关的跳转逻辑
            }
            return true
        }
    }
    • url.queryParameters 将解析 URL 中的查询参数。

步骤:

  1. AndroidManifest.xml 中声明处理 App Links 的活动(Activity):

    您需要在 Android 应用的 AndroidManifest.xml 中添加一个 Intent Filter 来处理 App Links。例如:

    ini 复制代码
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:exported="true">
        <intent-filter android:label="@string/app_name">
            <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="/productDetails" />
        </intent-filter>
    </activity>
    • android:scheme="https":指定处理的 URL 协议。
    • android:host="yourdomain.com":指定要处理的域名。
    • android:pathPrefix="/productDetails":指定要处理的路径。
  2. 验证和设置 Digital Asset Links 文件:

    与 iOS 的 apple-app-site-association 文件类似,Android 需要使用 assetlinks.json 文件来验证域名和应用之间的关联关系。

    1. 在您网站的 .well-known/ 目录下创建一个名为 assetlinks.json 的文件。示例如下:

      css 复制代码
      [    {        "relation": ["delegate_permission/common.handle_all_urls"],
              "target": {
                  "namespace": "android_app",
                  "package_name": "com.example.myapp",
                  "sha256_cert_fingerprints": [
                      "XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"
                  ]
              }
          }
      ]
      • package_name:您的 Android 应用的包名。
      • sha256_cert_fingerprints:您的应用签名证书的 SHA-256 指纹(可以通过 keytool 工具获取)。
    2. 上传 assetlinks.json 文件到您网站的 .well-known/ 目录下(即 https://yourdomain.com/.well-known/assetlinks.json)。

  3. 处理 App Link 的跳转:

    在您的 MainActivity 中处理传递过来的数据,例如:

    java 复制代码
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        Uri uri = intent.getData();
        if (uri != null) {
            String productId = uri.getQueryParameter("productId");
            // 根据 productId 进行处理
        }
    }
    • getData() 获取传递的 URL。
    • getQueryParameter("productId") 获取 URL 中的查询参数。

3. 如何测试:

  • iOS :在设备上安装应用并点击相应的 Universal Link(例如 https://yourdomain.com/productDetails?productId=1234),如果应用已安装,应该会直接跳转到应用。如果没有安装,则会打开浏览器。
  • Android :在设备上安装应用并点击相应的 App Link(例如 https://yourdomain.com/productDetails?productId=1234),如果应用已安装,应该会直接跳转到应用。如果没有安装,则会打开浏览器。

总结:

  1. Universal Links(iOS)App Links(Android) 是两种允许从网页直接跳转到应用的方法。
  2. 在 iOS 上,通过配置 associatedDomains 和上传 apple-app-site-association 文件来实现。需要在应用的 AppDelegate 中处理跳转。
  3. 在 Android 上,通过配置 AndroidManifest.xml 和上传 assetlinks.json 文件来实现。需要在应用的 MainActivity 中处理跳转。
  4. 这两种方法都可以让您在应用未安装时,打开网页,且一旦应用安装好,它会优先跳转到应用内。
相关推荐
YungFan27 分钟前
iOS26适配指南之UINavigationController
ios·swift
Lefan42 分钟前
一文了解什么是Dart
前端·flutter·dart
Kotlin上海用户组1 小时前
Koin vs. Hilt——最流行的 Android DI 框架全方位对比
android·架构·kotlin
0wioiw02 小时前
Flutter基础(前端教程④-组件拼接)
前端·flutter
zzq19962 小时前
Android framework 开发者模式下,如何修改动画过度模式
android
木叶丸2 小时前
Flutter 生命周期完全指南
android·flutter·ios
阿幸软件杂货间2 小时前
阿幸课堂随机点名
android·开发语言·javascript
没有了遇见2 小时前
Android 渐变色整理之功能实现<二>文字,背景,边框,进度条等
android
用户7427987737592 小时前
[flutter翻书效果] 用flutter实现一个书籍翻页效果
flutter
没有了遇见3 小时前
Android RecycleView 条目进入和滑出屏幕的渐变阴影效果
android