网页跳转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. 这两种方法都可以让您在应用未安装时,打开网页,且一旦应用安装好,它会优先跳转到应用内。
相关推荐
*才华有限公司*31 分钟前
安卓前后端连接教程
android
氦客1 小时前
Android Compose中的附带效应
android·compose·effect·jetpack·composable·附带效应·side effect
雨白1 小时前
Kotlin 协程的灵魂:结构化并发详解
android·kotlin
我命由我123452 小时前
Android 开发问题:getLeft、getRight、getTop、getBottom 方法返回的值都为 0
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
Modu_MrLiu2 小时前
Android实战进阶 - 用户闲置超时自动退出登录功能详解
android·超时保护·实战进阶·长时间未操作超时保护·闲置超时
Jeled2 小时前
Android 网络层最佳实践:Retrofit + OkHttp 封装与实战
android·okhttp·kotlin·android studio·retrofit
信田君95272 小时前
瑞莎星瑞(Radxa Orion O6) 基于 Android OS 使用 NPU的图片模糊查找APP 开发
android·人工智能·深度学习·神经网络
tangweiguo030519873 小时前
Kotlin 实现 Android 网络状态检测工具类
android·网络·kotlin
nvvas4 小时前
Android Studio JAVA开发按钮跳转功能
android·java·android studio
怪兽20144 小时前
Android多进程通信机制
android·面试