Version: 2023.1
언어: 한국어
다른 애플리케이션에서 Unity as a Library 사용
Xcode 프레임 디버거 Unity 통합

딥 링크

딥 링크는 웹사이트가 아닌 애플리케이션 내 특정 위치로 사용자를 연결하는 하이퍼링크입니다. 사용자가 딥 링크를 선택하면 Unity 애플리케이션 내 특정 씬과 같이 애플리케이션의 지정된 위치가 열립니다. Unity는 Application.absoluteURL 프로퍼티 및 Application.deepLinkActivated 이벤트를 사용하여 딥 링크를 지원합니다.

딥 링크 활성화

딥 링크를 처리하기 전에 애플리케이션이 딥 링크에 반응하도록 설정해야 합니다. 특정 URL에 반응하도록 애플리케이션을 설정하는 프로세스는 플랫폼에 따라 다릅니다. Unity는 다음 플랫폼에 대해 딥 링크를 지원합니다.

딥 링크 사용

애플리케이션의 현재 상태에 따라 딥 링크를 처리하는 두 가지 방법이 있습니다.

  • 애플리케이션이 실행 중이지 않은 경우: 기기에서 애플리케이션이 열리며 Application.absoluteURL이 기기가 애플리케이션에 전달하는 딥 링크 URL을 저장합니다.
  • 애플리케이션이 실행 중인 경우: 기기가 애플리케이션에 URL을 전달하며 딥 링크 URL을 파라미터로 사용하여 Application.deepLinkActivated 이벤트를 호출합니다. 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 파일입니다. 링크를 리디렉트하려면 <a> 요소 중 하나에서 href 속성을 변경합니다.

<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>
다른 애플리케이션에서 Unity as a Library 사용
Xcode 프레임 디버거 Unity 통합