包含此页的版本:
不含此页的版本:
深度链接是将用户带到应用程序内特定位置而不是网站的超链接。当用户选择深度链接时,应用程序会在指定位置打开,例如特定位置场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您可以放置环境、障碍物和装饰,实质上是分批设计和构建游戏。更多信息
请参阅术语表在 Unity 应用程序中。Unity 使用 Application.absoluteURL 属性和 Application.deepLinkActivated 事件来支持深度链接。
在处理深度链接之前,您需要配置应用程序以对它们做出反应。将应用程序配置为对特定 URL 做出反应的过程是特定于平台的。
Unity 支持以下平台的深度链接:
注意:在 Web 平台上,深度链接是常规的http:或https:Web URL,并且不依赖于应用程序处理程序协议unitydl:.
处理深度链接的方法有两种,具体取决于应用程序的当前状态:
在这两种情况下,请使用 Application.absoluteURL 选择要在应用程序中打开的场景。
以下代码示例演示如何根据应用程序的当前状态处理深度链接:
using UnityEngine;
using UnityEngine.SceneManagement;
public class ProcessDeepLinkMngr : MonoBehaviour
{
public static ProcessDeepLinkMngr Instance { get; private set; }
public string deeplinkURL;
private void Awake()
{
if (Instance == null)
{
Instance = this;
Application.deepLinkActivated += onDeepLinkActivated;
if (!string.IsNullOrEmpty(Application.absoluteURL))
{
// Cold start and Application.absoluteURL not null so process Deep Link.
onDeepLinkActivated(Application.absoluteURL);
}
// Initialize DeepLink Manager global variable.
else deeplinkURL = "[none]";
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
private void onDeepLinkActivated(string url)
{
// Update DeepLink Manager global variable, so URL can be accessed from anywhere.
deeplinkURL = url;
// Decode the URL to determine action.
// In this example, the application expects a link formatted like this:
// unitydl://mylink?scene1
string sceneName = url.Split('?')[1];
bool validScene;
switch (sceneName)
{
case "scene1":
validScene = true;
break;
case "scene2":
validScene = true;
break;
default:
validScene = false;
break;
}
if (validScene) SceneManager.LoadScene(sceneName);
}
}
要测试深度链接,请使用以下步骤:
这是一个示例 HTML 文件,可用于测试深度链接。要重定向链接,请将href属性<a>元素。
<html>
<head>
<meta charset="utf-8">
</head>
<body >
<h1>My Deep Link Test page</h1>
<p><a href="unitydl://mylink">Launch</a></p>
<p><a href="unitydl://mylink?parameter">Launch with Parameter</a></p>
</body>
</html>