유니티 C# 딥 링크 Deep Link 구현 방법 예시 코드 작성

반응형

유니티 C# 딥 링크 Deep Link 구현 방법 예시 코드 작성

  • AndroidManifest.xml
<activity android:name="com.unity3d.player.UnityPlayerActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- 딥링크로 사용할 스키마 설정 (예: myapp://auth) -->
        <data android:scheme="myapp" android:host="auth" />
    </intent-filter>
</activity>

 

  • 코드 작성
using UnityEngine;

public class DeepLinkHandler : MonoBehaviour
{
    void Start()
    {
        // 앱이 처음 실행될 때 딥링크가 설정되어 있는지 확인
        if (!string.IsNullOrEmpty(Application.absoluteURL))
        {
            HandleDeepLink(Application.absoluteURL);
        }

        // 앱 실행 중에 딥링크가 호출되면 이벤트를 통해 처리
        Application.deepLinkActivated += HandleDeepLink;
    }

    void HandleDeepLink(string url)
    {
        Debug.Log("Received deep link: " + url);

        // URL에서 필요한 정보를 추출하고 처리하는 코드 작성
        // 예: myapp://auth?token=abc123
        if (url.Contains("auth"))
        {
            // 로그인 성공 후 토큰 처리
            var token = GetParameterFromUrl(url, "token");
            Debug.Log("Token: " + token);

            // 토큰을 기반으로 추가적인 로그인 처리 등을 수행
            // ...
        }
    }

    // URL에서 특정 파라미터 추출하는 함수 (예: token 값을 가져오기)
    string GetParameterFromUrl(string url, string parameterName)
    {
        Uri uri = new Uri(url);
        string query = uri.Query;
        var queryParams = System.Web.HttpUtility.ParseQueryString(query);
        return queryParams.Get(parameterName);
    }
}

 

  • Info.plist
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>myapp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string> <!-- 딥링크 스키마 -->
        </array>
    </dict>
</array>

 

  • 코드 작성
#import "UnityAppController.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
{
    // Unity로 딥링크 URL 전달
    NSString* absoluteUrl = [url absoluteString];
    UnitySendMessage("DeepLinkHandler", "HandleDeepLink", [absoluteUrl UTF8String]);
    return YES;
}

@end
반응형