Deferred Deep Link는 사용자 기기에 앱이 아직 설치되지 않은 경우에도 전환 대상 컨텍스트를 보존하는 메커니즘입니다. Branch Resources에 따르면, 앱 설치 후 시스템은 자동으로 저장된 컨텍스트를 처리하고 사용자를 대상 화면으로 리디렉션합니다. Deferred Deep Link는 일반 딥 링크의 주요 문제인 설치되지 않은 앱에서 작동 불가능 문제를 해결합니다.
주요 포인트
Deferred Deep Link는 두 단계로 작동하는 딥 링크의 한 유형입니다. 먼저 사용자가 앱 설치 전에 링크를 클릭하고, 설치 완료 후 시스템이 컨텍스트를 복원합니다. 일반 딥 링크는 앱이 이미 설치된 경우에만 앱을 열지만, deferred는 모든 전환 매개변수를 저장하고 첫 실행 시 전달합니다.
이 기술은 모바일 마케팅의 성장과 함께 특히 수요가 늘어났습니다. 광고 캠페인은 종종 아직 앱을 설치하지 않은 사용자를 대상으로 합니다. deferred deep link가 없으면 이러한 각 전환은 컨텍스트 없이 단순히 앱을 다운로드하는 것으로 끝나며, 사용자는 대상 화면 대신 메인 화면에 도달하게 됩니다.
일반 딥 링크는 이미 설치된 앱에서 대상 콘텐츠를 엽니다. 앱이 설치되지 않은 경우 브라우저에 오류가 표시됩니다. Deferred Deep Link는 중간 서버를 통해 작동하여 사용자를 스토어로 리디렉션하고, 설치 후 저장된 매개변수를 앱에 알립니다. 따라서 deferred 링크는 앱의 사전 설치가 필요 없으며 광고에서 콘텐츠까지의 종단간 사용자 여정을 제공합니다.
deferred deep link 처리는 세 단계로 구성됩니다. 첫 번째 단계에서 사용자가 링크를 클릭하면 서버가 앱 설치 여부를 확인합니다. 설치되지 않은 경우 고유한 세션 식별자를 생성하고, 전환 매개변수를 저장한 후 이 식별자와 함께 사용자를 App Store 또는 Google Play로 리디렉션합니다.
두 번째 단계에서 사용자가 스토어에서 앱을 설치합니다. 설치 후 첫 실행 시 플랫폼 SDK가 서버에 연결하여 기기 식별자를 전송하고 저장된 전환 매개변수를 받습니다. 세 번째 단계에서 앱이 수신된 데이터를 처리하고 자동으로 사용자를 대상 화면으로 리디렉션합니다.
링크 클릭과 설치 사이에 매개변수를 저장하기 위해 다양한 메커니즘이 사용됩니다. iOS에서는 iCloud Keychain 또는 클립보드, Android에서는 Install Referrer API가 사용됩니다. Firebase Dynamic Links는 브라우저 localStorage와 스토어 리퍼럴 링크의 조합을 사용하여 세션 식별자를 전달합니다. Branch.io는 여러 저장소에 데이터를 백업하는 자체 프로토콜을 사용합니다.
iOS에서 deferred deep link는 Universal Links와 Shared Web Credentials의 조합을 통해 구현됩니다. 사용자가 앱 웹사이트의 Universal Link를 클릭하면 Safari가 앱 도메인과 연결된 iCloud Keychain에 전환 매개변수를 저장합니다. App Store에서 앱을 설치한 후 iOS는 저장된 데이터의 존재를 확인하고 첫 실행 시 앱에 전달합니다.
Apple은 deferred deep link를 위한 내장 API를 제공하지 않으며, 구현은 전적으로 타사 SDK에 맡겨집니다. Firebase Dynamic Links는 passive deferred 메커니즘을 사용하며, 데이터는 브라우저 쿠키에 저장되고 앱 첫 실행 시 특수 URL로의 리디렉션을 통해 복원됩니다.
iOS 14부터 Apple은 개인정보 보호 규칙을 강화하여 deferred deep link 메커니즘에 영향을 미쳤습니다. 클립보드는 더 이상 사용자의 명시적 허가 없이 데이터를 읽는 데 사용할 수 없습니다. iCloud Keychain에도 데이터 크기 제한이 있어 한 번 쓰기에 4 KB를 초과할 수 없습니다. 따라서 고유한 세션 식별자를 사용한 서버 측 솔루션이 컨텍스트 전달을 위한 선호 방법이 되었습니다.
Android는 Install Referrer API를 통해 deferred deep link에 대한 더 유연한 옵션을 제공합니다. 사용자가 Google Play 링크를 클릭하면 스토어가 리퍼러(전환 매개변수가 포함된 문자열)를 캡처합니다. 설치 후 앱은 Install Referrer API를 통해 이 문자열을 받고 대상 컨텍스트를 추출합니다. 이는 Android에서 가장 신뢰할 수 있는 deferred deep link 메커니즘입니다.
Google Play 외부에서 배포되는 앱의 경우 Android는 리퍼럴 BroadcastReceiver를 지원합니다. 개발자는 설치 후 매개변수와 함께 사용자 정의 Intent를 보낼 수 있으며, 앱은 매니페스트에 등록된 BroadcastReceiver를 통해 이를 수신합니다. 그러나 이 메커니즘은 설치 프로그램 구현에 따라 달라지므로 신뢰성이 떨어집니다.
Install Referrer API는 리퍼러 URL, 클릭 시간, 설치 시간을 포함한 설치 출처에 대한 정보를 제공합니다. 최대 리퍼러 문자열 길이는 8 KB로, 필요한 모든 딥 링크 매개변수를 전달하기에 충분합니다. 이 API는 Google Play Store 버전 8.3.73 이상의 기기에서 사용 가능하며 Android 5.0(API 21)에서 지원됩니다.
Firebase Dynamic Links는 두 플랫폼 모두에서 deferred deep link를 구현하는 가장 인기 있는 무료 도구입니다. Firebase는 deferred 전환의 모든 단계를 자동으로 처리합니다: 앱이 없을 때 스토어로 리디렉션, Firebase 서버에 매개변수 저장, 앱 첫 실행 시 SDK로 전달입니다.
구현하려면 프로젝트에 Firebase SDK를 통합하고, Firebase Console을 통해 딥 링크와 캠페인 매개변수를 지정하여 Dynamic Link를 생성하기만 하면 됩니다. Firebase SDK는 앱 실행 시 자동으로 호출되며 getDynamicLink() 메서드를 통해 수신된 Dynamic Link를 확인합니다.
Kotlin의 Activity에서 deferred Firebase Dynamic Link 처리 예제입니다. 코드는 앱 실행 시 콜드 스타트와 웜 스타트 모두에서 동일하게 작동합니다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDeferredLink()
}
private fun checkDeferredLink() {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deferredLink = link?.link.toString()
if (deferredLink.isNotEmpty()) {
navigateToContent(deferredLink)
}
}
}
}
getDynamicLink() 메서드는 DynamicLink 객체와 함께 PendingTask를 반환합니다. 링크 클릭 후 앱이 설치된 경우 리스너는 매개변수가 있는 데이터를 받습니다. 전환 전에 앱이 이미 설치되어 있던 경우 메서드는 일반 딥 링크와 동일한 데이터를 반환합니다. 링크 매개변수의 minimumAppVersion 플래그는 처리를 위한 최소 앱 버전을 설정할 수 있습니다.
Deferred Deep Link는 마케팅 캠페인에 상당한 이점을 제공합니다: 사용자는 추가 작업 없이 설치 후 대상 콘텐츠를 받아 전환율과 유지율이 향상됩니다. 리퍼럴 프로그램의 경우 deferred 링크는 초대를 설치 및 새 사용자 작업과 명확하게 연결할 수 있습니다.
그러나 이 기술에는 제한 사항도 있습니다. deferred deep link는 타사 쿠키를 차단하는 브라우저에서 작동하지 않으며, iOS 버전 14부터는 iCloud Keychain에 대한 추가 구성이 필요합니다. 또한 링크 클릭과 설치 사이에 며칠이 지날 수 있으며, 모든 SDK가 해당 기간 동안 데이터 보존을 보장하지는 않습니다.
deferred deep link는 신규 사용자를 대상으로 하는 광고 캠페인, 초대장이 포함된 이메일 뉴스레터 및 리퍼럴 프로그램에 필수적입니다. 이미 설치된 사용자의 경우 일반 딥 링크로 충분합니다. 앱이 마케팅 캠페인이나 리퍼럴 메커니즘을 사용하지 않는 경우 deferred deep link는 필요하지 않으며 Universal Links와 App Links로 충분합니다.
구현을 선택할 때 비용을 고려하세요: Firebase Dynamic Links는 무료이지만 분석 기능이 제한적입니다. Branch.io와 AppsFlyer는 고급 속성을 제공하지만 구독이 필요합니다. 소규모 프로젝트의 경우 Firebase가 최적의 솔루션이며, 수십 개의 광고 채널을 가진 기업의 경우 상용 MMP가 선택입니다.
자주 묻는 질문
일반 딥 링크는 앱이 설치되어 있어야 하며 직접 앱을 엽니다. Deferred Deep Link는 앱이 설치되지 않은 경우에도 작동합니다 — 스토어로 리디렉션하고 설치 후 전환 컨텍스트를 복원하여 대상 화면을 엽니다.
저장 기간은 플랫폼에 따라 다릅니다. Firebase Dynamic Links는 매개변수를 최대 30일까지 저장합니다. Branch.io는 최대 90일까지 데이터를 보관합니다. Android에서 Install Referrer API는 앱이 처음 읽을 때까지 리퍼러 문자열을 저장하지만 90일을 초과할 수 없습니다.
데스크톱에서는 컴퓨터에서 스토어를 통해 앱을 설치할 수 없기 때문에 deferred deep link가 의미가 없습니다. 데스크톱에서 링크를 클릭하면 사용자에게 대체 URL — 콘텐츠의 웹 버전 또는 모바일 기기에 설치하기 위한 QR 코드가 포함된 페이지 — 가 표시됩니다.
Chrome, Safari 및 Samsung Internet은 쿠키 및 localStorage 메커니즘을 통해 deferred deep link를 지원합니다. Firefox는 엄격한 타사 쿠키 차단 정책으로 인해 지원이 제한적입니다. 최대 적용 범위를 위해 Firebase 또는 Branch.io SDK 사용을 권장합니다.
기술적으로는 중간 서버와 리퍼럴 메커니즘을 통해 자체 솔루션을 구현할 수 있습니다. 그러나 서버 인프라 개발 및 유지 관리, 쿠키 처리, 각 스토어와의 통합, 다양한 플랫폼에서의 문제 해결이 필요합니다. 기성 Firebase 및 Branch.io SDK는 개발을 수십 배 가속화합니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.