跳转到内容
Tauri

深度链接(deep-link)

将你的 Tauri 应用程序设置为 URL 的默认处理程序。

支持的平台

  • Android
  • iOS

设置

这个插件要求 Rust 版本至少是 1.75

请安装 deep-link 插件。

使用项目的包管理器来添加依赖。

npm run tauri add deep-link

设置

Android

对于 app links,你需要一个具有 .well-known/assetlinks.json 端点的服务器,该端点必须返回给定格式的文本响应。

.well-known/assetlinks.json
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "$APP_BUNDLE_ID",
"sha256_cert_fingerprints": [
$CERT_FINGERPRINT
]
}
}
]

其中 $APP_BUNDLE_IDtauri.conf.json > identifier 上定义的值,其中 - 替换为 _$CERT_FINGERPRINT 是你的应用签名证书的 SHA256 指纹列表,请参阅 verify android applinks 以获取更多信息。

iOS

Server

对于 universal links,你需要一个具有 .well-known/apple-app-site-association 端点的服务器,该端点必须返回给定格式的文本响应。

.well-known/apple-app-site-association
{
"applinks": {
"details": [
{
"appIDs": ["$DEVELOPMENT_TEAM_ID.$APP_BUNDLE_ID"],
"components": [
{
"/": "/open/*",
"comment": "Matches any URL whose path starts with /open/"
}
]
}
]
}
}

其中 $DEVELOPMENT_TEAM_IDtauri.conf.json > tauri > bundle > iOS > developmentTeamTAURI_APPLE_DEVELOPMENT_TEAM 环境变量上定义的值,$APP_BUNDLE_ID是定义在tauri.conf.json > identifier 上的值。请参阅 applinks.details 以获取更多信息。

App

你还需要将相关域名添加到应用的 entitlement 文件中。

src-tauri/gen/apple/[App Name]_iOS/[App Name]_iOS.entitlements
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:your.website.com</string>
<string>applinks:nother.site.br</string>
</array>
</dict>
</plist>

有关更多信息,请参阅 supporting associated domains

配置

tauri.conf.json > plugins > deep-link 下,配置你想要关联到你的应用程序的域。

tauri.conf.json
{
"plugins": {
"deep-link": {
"domains": [
{ "host": "your.website.com", "pathPrefix": ["/open"] },
{ "host": "another.site.br" }
]
}
}
}

用法

deep-link 有 JavaScript 和 Rust 两种版本。

import { onOpenUrl } from '@tauri-apps/plugin-deep-link';
await onOpenUrl((urls) => {
console.log('deep link:', urls);
});

权限

默认情况下,所有插件命令都被阻止,无法访问。 你必须在你的 capabilities 配置中定义一个权限列表。

更多信息请参见访问控制列表

src-tauri/capabilities/main.json
{
"$schema": "./schemas/mobile-schema.json",
"identifier": "mobile-capability",
"windows": ["main"],
"platforms": ["iOS", "android"],
"permissions": [
// 通常需要 event:default 来监听 deep-link 事件
"event:default",
"deep-link:default"
]
}
权限描述
deep-link:default允许通过 get_current 命令读取打开的深度链接。
deep-link:allow-get-current在没有预先配置的作用域的情况下启用 get_current 命令。
deep-link:deny-get-current拒绝没有任何预配置范围的 get_current 命令。

© 2024 Tauri Contributors. CC-BY / MIT