网页跳转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. 这两种方法都可以让您在应用未安装时,打开网页,且一旦应用安装好,它会优先跳转到应用内。
相关推荐
还鮟4 小时前
CTF Web的数组巧用
android
点金石游戏出海4 小时前
每周资讯 | Krafton斥资750亿日元收购日本动画公司ADK;《崩坏:星穹铁道》新版本首日登顶iOS畅销榜
游戏·ios·业界资讯·apple·崩坏星穹铁道
小蜜蜂嗡嗡5 小时前
Android Studio flutter项目运行、打包时间太长
android·flutter·android studio
aqi005 小时前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体
90后的晨仔6 小时前
Xcode16报错: SDK does not contain 'libarclite' at the path '/Applicati
ios
zhangphil7 小时前
Android理解onTrimMemory中ComponentCallbacks2的内存警戒水位线值
android
finger244807 小时前
谈一谈iOS线程管理
ios·objective-c
你过来啊你7 小时前
Android View的绘制原理详解
android
Digitally7 小时前
如何将大型视频文件从 iPhone 传输到 PC
ios·iphone
梅名智8 小时前
IOS 蓝牙连接
macos·ios·cocoa