网页跳转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. 这两种方法都可以让您在应用未安装时,打开网页,且一旦应用安装好,它会优先跳转到应用内。
相关推荐
投笔丶从戎1 小时前
Kotlin Multiplatform--01:项目结构基础
android·开发语言·kotlin
Lary_Rock2 小时前
Android 编译问题 prebuilts/clang/host/linux-x86
android·linux·运维
玫瑰花开一片一片2 小时前
Flutter IOS 真机 Widget 错误。Widget 安装后系统中没有
flutter·ios·widget·ios widget
王江奎3 小时前
Android FFmpeg 交叉编译全指南:NDK编译 + CMake 集成
android·ffmpeg
limingade3 小时前
手机打电话通话时如何向对方播放录制的IVR引导词声音
android·智能手机·蓝牙电话·手机提取通话声音
hepherd4 小时前
Flutter 环境搭建 (Android)
android·flutter·visual studio code
烎就是我4 小时前
100行代码swift从零实现一个iOS日历
ios·swift
_一条咸鱼_4 小时前
揭秘 Android ListView:从源码深度剖析其使用原理
android·面试·android jetpack
_一条咸鱼_4 小时前
深入剖析 Android NestedScrollView 使用原理
android·面试·android jetpack