要在 iOS 和 Android 上使用 Universal Links 和 App Links 进行跳转,您需要按照不同平台的具体要求进行配置。以下是详细的设置步骤和解释:
1. iOS - Universal Links 设置
步骤:
-
注册并设置应用的
associatedDomains
:您需要在 iOS 应用的
Capabilities
中启用 Associated Domains。这将允许您的应用处理指定的 Universal Links。-
打开 Xcode 项目。
-
选择您的项目,点击 Signing & Capabilities。
-
点击 + Capability ,并添加 Associated Domains。
-
在 Associated Domains 中添加
applinks
前缀的域名。例如:makefileapplinks:yourdomain.com
这意味着,您的应用将处理以
yourdomain.com
为域名的 Universal Links。
-
-
创建并上传
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
)。 -
在应用中处理 Universal Link:
在您的 iOS 应用中,您需要在 AppDelegate 中处理 Universal Link 的打开事件。
例如:
swiftimport 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 中的查询参数。
2. Android - App Links 设置
步骤:
-
在
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"
:指定要处理的路径。
-
验证和设置 Digital Asset Links 文件:
与 iOS 的
apple-app-site-association
文件类似,Android 需要使用assetlinks.json
文件来验证域名和应用之间的关联关系。-
在您网站的
.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
工具获取)。
-
上传
assetlinks.json
文件到您网站的.well-known/
目录下(即https://yourdomain.com/.well-known/assetlinks.json
)。
-
-
处理 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
),如果应用已安装,应该会直接跳转到应用。如果没有安装,则会打开浏览器。
总结:
- Universal Links(iOS) 和 App Links(Android) 是两种允许从网页直接跳转到应用的方法。
- 在 iOS 上,通过配置
associatedDomains
和上传apple-app-site-association
文件来实现。需要在应用的AppDelegate
中处理跳转。 - 在 Android 上,通过配置
AndroidManifest.xml
和上传assetlinks.json
文件来实现。需要在应用的MainActivity
中处理跳转。 - 这两种方法都可以让您在应用未安装时,打开网页,且一旦应用安装好,它会优先跳转到应用内。