Unity 6.3
0 онлайн 38 гостей 3 в системе
Вход

Глубокие ссылки

Глубокие ссылки — это гиперссылки, которые перенаправляют пользователя в определенное место в приложении, а не на веб-сайт. Когда пользователь выбирает глубокую ссылку, приложение открывается в указанном месте, например в определенной сцене в приложении Unity. Unity использует свойства Application.absoluteURL и событие Application.deepLinkActivated для поддержки глубоких ссылок.

Включить глубокие ссылки

Прежде чем вы сможете обрабатывать глубокие ссылки, вам необходимо настроить приложение на реагирование на них. Процесс настройки приложения на реагирование на конкретные URLs зависит от платформы.

Unity поддерживает глубокие ссылки для следующих платформ:

Примечание: На веб-платформе глубокие ссылки являются обычными http: или https: web URLs и не зависят от протокола обработчика приложений unitydl:.

Используйте глубокие ссылки

Есть два способа обработать глубокую ссылку, и зависят они от текущего состояния приложения:

  • Приложение не запущено: устройство открывает приложение, и Application.absoluteURL сохраняет глубокую ссылку URL, которую устройство передает приложению.
  • Приложение работает: устройство передает URL приложению и вызывает событие Application.deepLinkActivated с использованием глубокой ссылки URL в качестве параметра. Application.absoluteURL обновляется одновременно.

В обоих случаях используйте 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);
    }
}

Проверка глубокой ссылки

Для проверки глубинной ссылки выполните следующие действия:

  1. Создайте файл HTML, содержащий глубокую ссылку для тестирования.
  2. Разместите файл HTML на локальном веб-сервере.
  3. Откройте файл HTML в веб-браузере на вашем устройстве и нажмите на глубокую ссылку.

Пример файла HTML

Это пример файла 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>