Version: 2020.3
将“Unity 用作库”用于其他应用程序
独立平台

启用深层链接

深层链接是直接指向应用程序内部内容的链接。Unity 使用 Application.absoluteURL 属性和 Application.deepLinkActivated 事件在以下平台上支持深层链接:

  • Android
  • iOS
  • 通用 Windows 平台 (UWP)

通过深层链接 URL 来激活应用程序时,Unity 会调用 Application.deepLinkActivated 事件。要在这种情况下处理深层链接,您可以:

例如,可以将以下代码附加到位于启动场景中的游戏对象:

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))
    {
    // 冷启动而且 Application.absoluteURL 不为 null,因此处理深层链接。
                onDeepLinkActivated(Application.absoluteURL);
    }
    // 初始化 DeepLink Manager 全局变量。
    else deeplinkURL = "[none]";
    DontDestroyOnLoad(gameObject);
    }
    else
    {
    Destroy(gameObject);
    }
    }
 
    private void onDeepLinkActivated(string url)
    {
    // 更新 DeepLink Manager 全局变量,以便可以从任何位置访问 URL。
    deeplinkURL = url;
    
// 解码 URL 以确定操作。
// 在此示例中,应用程序期望链接的格式如下:
// unitydl://mylink?scene1
    string sceneName = url.Split("?"[0])[1];
    bool validScene;
    switch (sceneName)
    {
    case "scene1":
    validScene = true;
    break;
    case "scene2":
    validScene = true;
    break;
    default:
    validScene = false;
    break;
    }
    if (validScene) SceneManager.LoadScene(sceneName);
    }
}

配置应用程序来对特定 URL 进行响应的过程取决于具体平台。

iOS

有两种方法可以让应用程序对深层链接做出反应:URL 方案和通用链接。

URL 方案

要添加 URL 方案,请遵循以下步骤:

1.打开 iOS Player Settings 窗口(菜单:Edit > Project Settings > Player Settings,然后选择 iOS)。 2.选择 Other,然后向下滚动到 Configuration。 3.展开 Supported URL schemes 部分,然后在 Element 0 字段中,输入与您的应用程序相关联的 URL 方案(例如 unitydl)。

这样使应用程序可以打开任何以 unitydl:// 开头的链接,并允许您处理 Application.deepLinkActivated 事件中的 URL。

通用链接

无法将应用程序设置为使用 Unity Editor 中的通用链接,因为这需要外部网站。有关更多信息,请参阅有关启用通用链接 (Enabling Universal Links) 的 Apple 文档。

Android

要启用深层链接,需要设置一个覆盖标准应用程序清单的特制过滤器,以便为活动 (Activity) 包含特定的 intent-filter 部分。 最简单的方法是将以下 AndroidManifest.xml 文件放入项目的 Assets/Plugins/Android 文件夹中。构建应用程序时,Unity 将自动处理此文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
  <application>
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="unitydl" android:host="mylink" />
      </intent-filter>
    </activity>
  </application>
</manifest>

这样使应用程序可以打开任何以 unitydl:// 开头的链接,并允许您处理 Application.deepLinkActivated 事件中的 URL。

通用 Windows 平台 (UWP)

要将自定义 URI 方案添加到应用程序,请按照以下步骤操作:

1.打开 UWP Player Settings 窗口(菜单:Edit > Project Settings > Player Settings,然后选择 UWP)。 2.选择 Publishing Settings,然后向下滚动到 Protocol。 3.在 Name 字段中,输入 unitydl

这样使应用程序可以打开任何以 unitydl:// 开头的链接。

测试深层链接

要测试深层链接,可以创建一个 HTML 文件,将此文件托管在本地 Web 服务器上,然后从设备上的 Web 浏览器访问这个文件:

<html>
<head>
   <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
</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>
将“Unity 用作库”用于其他应用程序
独立平台