반응형
유니티 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
반응형