이 문서에서는 Apple의 새로운 딥링크 기술에 대해 설명합니다.
딥링크에 대한 자세한 내용은 Singular의 딥링크 FAQ를 참고하세요.
Singular의 트래킹 링크와 트래킹 링크에서 지원되는 여러 기술에 대한 자세한 내용은 Singular 링크 FAQ를 참고하세요.
딥링킹에 대해서는 딥링크 FAQ 문서를 참조하세요.
Universal Links는 이전의 URI 스킴 딥링크 방법을 대체하기 위해 고안된 Apple의 새로운 딥링크로 iOS 9 이상의 기기에서 사용 가능합니다.
Universal Link의 딥링크 동작은 URI 스킴과 유사하지만 내부 로직은 매우 다르게 작동합니다. Universal Link는 일반 HTTPS URL(예: “https://www.linkedin.com”) 과 동일하게 생겼습니다. 사용자가 Universal Link를 클릭하면 링크에서 설정되어 있는대로 사용자의 디바이스에서 앱이 열립니다. 디바이스에 앱이 설치되지 않은 경우 사용자는 모바일 브라우저의 실제 URL로 이동합니다.
Apple의 개발자 문서를 참고하세요.
앱 개발자는 다음을 따라 앱에서 Universal Link를 활성화합니다.
- Apple 개발자 계정에서 연결된 도메인 활성화
사용자의 Apple 개발자 계정에 로그인하여 앱의 ID 페이지로 이동합니다. Associated Domains app service를 활성화합니다. 나중에 필요하기 때문에 Prefix(Bundle ID) 및 ID(Team ID)를 기록해 두세요.
- 애플리케이션에 Associated Domain 기능 추가
Xcode에서 앱에 "Associated Domain" 기능을 추가하고 웹 서버 도메인을 Associated Domain으로 추가합니다.
-
웹 서버 구성
-
apple-app-site-association 파일 생성
앱 페이지의 Prefix 및 ID를 사용하여 다음과 같은 JSON 형식의 파일을 구성하고 루트에서 접근할 수 있는 HTTPS 웹 도메인에서 이를 호스트합니다.
예를 들어 "https://www.mycompanywebsite.com/domain"을 가지고 있는 경우 JSON 파일은 URL "https://www.mycompanywebsite.com/apple-app-site-association"에서 접근할 수 있어야 합니다. 호스트된 파일에는 .json 파일 확장자를 포함하지 않아야 합니다.
{
"applinks": {
"apps": [],
"details": [
{
"appID": "A4GXBZ4XU7.my.cool.app",
"paths": [ "/page/all/", "/user/saved/*"]
}
]
}
}appID는 사용자의 [teamID].[app bundle ID]이며 이를 통해 사용자의 앱을 식별합니다. 앱에 있는 유효한 콘텐츠 페이지에 대해서는 경로에서 자세히 지정하며, Apple에서는 이 경로를 짧게 유지하도록 권장합니다.모든 경로를 지정하려면 와일드카드("*")를, 특정 경로를 제외하려면 "NOT" 키워드를 사용할 수 있습니다.(예: "NOT /user/saved/*"). 자세한 내용은 Universal Link 활성화에 대한 Apple 문서를 참고하세요.
-
Universal Link 코드 처리: 마지막으로 앱을 열 Universal Link가 제대로 처리되는지 확인합니다. 애플리케이션 델리게이트 코드에 application:continueUserActivity:restorationHandler: 메서드를 추가하세요.
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
// Put code here to take user to relevant content
}
return YES;
}
-
Singular는 이 작업을 자동으로 처리합니다. iOS 앱에서 Universal Link를 설정한 후 사용 중인 앱에서 Singular 링크를 생성하고 딥링크를 활성화하면 해당 링크가 자동으로 iOS Universal Link로 작동하며, 딥링크와 모바일 폴백을 모두 제공합니다.
다른 링크에서 Universal Link URL로 리디렉션하는 경우, 즉 해당 링크를 다른 링크로 감싸는(link wrapping) 경우 딥링크가 작동하지 않고 브라우저의 모바일 웹 페이지로 이동합니다. 이는 Apple에서 경로 재지정 뒤에 항상 “user intent”를 요구하는데 다른 URL로 리디렉션되어 딥링크되는 트래킹 링크는 직접적인 user intent로 간주되지 않기 때문입니다. 따라서 어트리뷰션 트래커의 트래킹 링크를 자신의 링크로 감싸는 파트너와는 Universal Link를 사용할 수 없습니다.
이러한 제약 사항을 이해하고 이 문제를 해결하려면 Singular의 모범 사례와 예제를 참고하세요.
"클릭" 없이 추적
사용자가 트래킹 기능이 활성화된 Universal Link를 클릭하고 앱이 설치되어 있는 상황에서 사용자를 앱으로 딥링크하는 경우, 일부 어트리뷰션 트래커가 이 터치포인트를 트래킹하지 못할 수도 있습니다. 해당 디바이스가 HTTP 요청을 수행하지 않아서 "클릭"이 등록되지 않기 때문입니다.
Singular를 사용하면 이 문제를 해결할 수 있습니다. Singular 링크는 설치 링크와 딥링크 모두의 신규 유저 유입과 리인게이지먼트를 트래킹할 수 있습니다.