开发

应用深度链接

更新时间: 2026年5月18日
This is a Platform SDK feature requiring Data Use Checkup
如要使用此功能或任何其他平台 SDK 功能,您需要完成数据使用情况检查 (DUC)。DUC 可确保您遵守开发者政策。这需要你团队的管理员证明你对用户数据的使用符合平台守则。在应用审核团队审核并批准您的 DUC 之前,平台功能仅供测试用户使用。
应用深度链接允许您将用户直接启动到另一款应用,并可配置为直接启动进入该应用的特定活动或游戏模式。
例如,您可能有两个不同的应用程序,一个用于单人游戏,另一个用于多人游戏。如果您在这两个应用中都实现了应用深度链接,用户就可以从单人游戏应用加入到多人游戏会话中。
需要在请求发起应用以及目标应用中集成深度链接。我们会在以下几部分介绍两个应用都必须执行的实现流程。
不允许通过应用之间的深度链接变现。如需了解更多详情,请参阅我们的应用政策主题中的跨应用链接
您应该获得用户访问链接的知情同意。对于跨应用链接,必须提供关于目标的有意义信息,其中包括:目标应用的内容评级,是免费还是付费体验,目标应用是否包括多人游戏或语音通信,向目标应用共享哪些信息,13 岁以下用户是否需要家长批准。
此外,必须遵守开发者数据使用政策,该政策将限制与第三方共享数据。例如,如果您向目标应用分享用户编号,则应用将因为接收该信息而接受数据使用检查。建议您在尚未接受数据使用检查的情况下仅分享会话编号,以避免发生这种情况。

请求发起应用实现

请求发起应用将调用 LaunchOtherApp 方法来启动另一个应用。
此方法会启动用户库中的一个不同应用程序。如果该用户未安装对应的应用程序,该用户将被引导至 Meta Horizon 商店中的此应用页面。
参数:
参数描述
appID
要启动的应用的编号
deeplink_options
用于此请求的更多配置。可选。
例如,来自一个 Unity 应用程序的请求可能类似于:
var options = new ApplicationOptions();
options.SetDeeplinkMessage("abc");
Application.LaunchOtherApp(appId, options);
提出请求后,您应该立即查看目标应用程序是否成功启动。仅在用户有权使用(拥有)并安装了目标应用时,请求才会成功。如果用户未拥有此应用或未下载此应用,用户将跳转到 2D 商店中此产品的信息页面。用户可在此页面购买和下载此应用。
注意:仅适用于 Meta Horizon Link — 收到目标应用启动成功的通知后,您需手动退出请求发起应用,目标应用才能继续运行。

启动 Horizon 世界

注意:您可以将目标应用程序设置为 Horizon 世界。在这种情况下,用户将跳转至 Horizon 世界应用,同时系统会加载目标世界。若要执行此操作:
  1. AppID 参数设置为硬编码的 Horizon 世界应用编号:2532035600194083
  2. FOvrApplicationOptions 对象上,使用值为 "together://world_builder/wb_visit?world_id=<TargetHorizonWorldID>"SetDeeplinkMessage,其中 <TargetHorizonWorldID> 是要加载世界的编号。
  3. ApplicationOptions 对象上,使用值 <TargetHorizonWorldID>(与深度链接消息中 world_id 参数相同的 Horizon 世界编号)的 SetDestinationApiName

接收应用实现

Application.LaunchOtherApp(appId, deeplink_options)
启动的应用将正常启动,并在消息队列中接收
Notification_ApplicationLifecycle_LaunchIntentChanged
类型的通知。
在 Unity 应用上,启动时检查此通知,并调用 ApplicationLifecycle.GetLaunchDetails() 来检索此应用如何启动的信息。
此 API 生成的所有通知都将具有 DEEPLINK 启动类型。通过此信息,您可以将用户引导至适当的应用位置。
如果用户在使用 Meta Horizon Link 设备,且用户尚未拥有此应用,LaunchOtherApp 请求将返回一个错误,您需要在您的代码中妥善处理此错误。如果用户确实拥有此应用,收到目标应用启动成功的通知后,您必须自行退出请求发起应用,目标应用才能继续运行。
如果用户使用 Meta Quest 设备,且用户尚未拥有此应用或未下载此应用,用户将跳转到商店中此产品的信息页面。在该页面,用户可以购买和下载此应用。
以下规则适用于请求发起应用和接收应用。deeplink_message 字符串对平台层而言是不透明的,其格式由请求发起应用和接收应用双方约定。接收应用通过 GetLaunchDetails 读取该字符串并进行相应路由。
两种规则如下:
简单标识符或路径 — 用于路由到目标应用内的特定内容:
// Originating app sends an identifier
options.SetDeeplinkMessage("level/forest_01");

// Target app parses on receive
var details = ApplicationLifecycle.GetLaunchDetails();
if (details.LaunchType == LaunchType.Deeplink) {
    var path = details.DeeplinkMessage;
    // For example, "level/forest_01" loads the corresponding scene.
}
结构化 URI — 用于带参数的路由。Horizon 世界的启动规则采用了这一模式;您也可以为自己的应用采用相同的形式:
<scheme>://<resource>?<key1>=<value1>&<key2>=<value2>
格式由应用程序定义。在接收端使用引擎的标准字符串解析工具对其进行解析。
注意:这不是 Android URI 方案。平台层不会根据字符串内容进行注册或路由,只有请求发起应用和目标应用会对其进行解读。对于基于 Android intent 的深度链接(在 AndroidManifest.xml 中注册的自定义网址方案),请参阅 2D Android 配套应用开发,该路径使用标准的 Android 规则,而非平台 SDK。