网页跳转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. 这两种方法都可以让您在应用未安装时,打开网页,且一旦应用安装好,它会优先跳转到应用内。
相关推荐
千里马学框架2 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台2 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone2 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc2 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo2 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077002 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
茶底世界之下2 天前
为什么预览、录制、离线导出不能共享同一个背压策略?
ios·swift
AFinalStone2 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen2 天前
属性动画原理与高级动画实现
android·kotlin·canvas