Android SDK - 딥 링크 지원

문서

딥링킹 지원 추가

딥링크는사용자를 앱 내의 특정 콘텐츠로 연결합니다. 사용자가 앱이 설치된 기기에서 딥링크를 탭하면 앱이 제품 페이지나 특정 경험 등 의도한 콘텐츠로 바로 연결됩니다.

Singular 추적 링크는 표준 딥링킹(설치된 앱의 경우)과 디퍼드 딥링킹(신규 설치의 경우)을 모두 지원합니다. 자세한 내용은 딥링킹 FAQSingular 링크 FAQ를 참조하세요.


요구 사항

전제 조건

앱에 딥링킹을 사용하려면 Singular 링크 사전 요구 사항을완료하세요.


Singular 링크 핸들러 구현

Singular링크 핸들러는 앱이 열릴 때 Singular 추적 링크에서 딥링크, 디퍼드 딥링크 및 패스스루 파라미터를 검색하는 콜백 메커니즘을 제공합니다.

사용 가능한 파라미터

  • 딥링크(_dl): 링크를 클릭하는 사용자의 앱 내 목적지 URL입니다.
  • 디퍼드 딥링크(_ddl): 링크를 클릭한 후 앱을 설치하는 사용자를 위한 목적지 URL
  • 패스스루(_p): 추가 컨텍스트를 위해 추적 링크를 통해 전달되는 사용자 지정 데이터

SDK 구성

구성에 Singular링크 핸들러 추가하기

들어오는 딥링크 및 디퍼드 딥링크 데이터를 처리하도록 SDK 초기화 중에 SingularLinkHandler를 구성합니다.

KotlinJava
private fun initSingularSDK() {
    val config = SingularConfig("SDK_KEY", "SDK_SECRET")
        .withSingularLink(intent) { params ->
            val deeplink = params.deeplink
            val passthrough = params.passthrough
            val isDeferred = params.isDeferred

            Log.d("SingularLink", "Deeplink: ${deeplink ?: "null"}")
            Log.d("SingularLink", "Passthrough: ${passthrough ?: "null"}")
            Log.d("SingularLink", "Is Deferred: $isDeferred")
            
            // Handle deep link routing
            deeplink?.let { url ->
                handleDeepLink(url, isDeferred)
            }
        }

    try {
        Singular.init(applicationContext, config)
        Log.d("Singular", "SDK initialized successfully")
    } catch (e: Exception) {
        Log.e("Singular", "SDK initialization failed: ${e.message}")
    }
}

override fun onNewIntent(intent: Intent?) {
  super.onNewIntent(intent)
  // Configure onNewIntent to handle Warm start deeplinks
  intent?.let {
    setIntent(intent)
    initSingularSDK()
  }
}

참고: 싱귤래러링크 핸들러는 앱이 싱귤래러 링크를 통해 열릴 때만 트리거됩니다. 자세한 내용은 Singular 링크 FAQ를 참조하세요.


핸들러 동작

Singular링크 핸들러는 앱이 새로 설치되었는지 또는 이미 설치되었는지에 따라 다르게 동작합니다.

새로 설치(디퍼드 딥링크)

새로 설치한 경우 앱이 실행될 때 오픈 URL이 존재하지 않습니다. 추적 링크에 딥링크 또는 디퍼드 딥링크 값이 포함되어 있는지 확인하기 위해 Singular 어트리뷰션이 완료됩니다.

디퍼드 딥링크 흐름:

  1. 사용자가 딥링크 값으로 구성된 Singular 트래킹 링크를 클릭합니다.
  2. 사용자가 앱을 설치하고 처음 실행합니다.
  3. Singular SDK가 첫 번째 세션을 Singular 서버로 전송합니다.
  4. 어트리뷰션이 트래킹 링크에서 딥링크를 식별하고 어트리뷰션을 완료합니다.
  5. 딥링크 값이 deeplink 파라미터의 SingularLinkHandler에 isDeferred = true으로 반환됩니다.

디퍼드 딥링크 테스트:

  1. 테스트 기기에서 앱을 제거합니다(현재 설치되어 있는 경우).
  2. 기기에서 구글 광고 ID(GAID)를 재설정합니다.
  3. 기기에서 Singular 추적 링크를 클릭합니다(딥링크 값으로 구성되었는지 확인).
  4. 앱을 설치하고 엽니다.

어트리뷰션이 성공적으로 완료되고 디퍼드 딥링크 값이 Singular링크 핸들러에 전달됩니다.

프로 팁: 다른 패키지 이름(예: com.example.prod 대신 com.example.dev)을 사용하는 개발 빌드로 딥링크를 테스트하는 경우, 개발 앱의 패키지 이름에 맞게 추적 링크를 구성하세요. 테스트 링크를 클릭한 후 앱 스토어에서 프로덕션 앱을 다운로드하지 말고 Android 스튜디오 또는 APK를 통해 개발 빌드를 기기에 직접 설치합니다.


이미 설치됨(즉시 딥 링크)

앱이 이미 설치되어 있는 경우 Singular 링크를 클릭하면 안드로이드 앱 링크 기술을 사용하여 앱이 즉시 열립니다.

즉시 딥링크 흐름:

  1. 사용자가 Singular 추적 링크를 클릭합니다.
  2. 안드로이드 OS는 전체 Singular 트래킹 링크가 포함된 오픈 URL을 제공합니다.
  3. SDK 초기화 도중, Singular가 안드로이드 인텐트를 파싱합니다.
  4. Singular가 deeplinkpassthrough값을 추출합니다.
  5. 값은 SingularLinkHandler를 통해 isDeferred = false로 반환됩니다.

매개변수 통과

패스스루 매개변수를 사용하여 추적 링크 클릭에서 추가 데이터를 캡처합니다.

추적 링크에 passthrough (_p) 파라미터가 포함된 경우, SingularLinkHandler의 passthrough 파라미터에 해당 데이터가 포함됩니다. 캠페인 메타데이터, 사용자 세분화 데이터 또는 앱에서 필요한 사용자 지정 정보를 캡처하는 데 사용합니다.

KotlinJava
val config = SingularConfig("SDK_KEY", "SDK_SECRET")
    .withSingularLink(intent) { params ->
        // Extract passthrough data
        params.passthrough?.let { passthroughData ->
            // Parse and use custom data
            val jsonData = JSONObject(passthroughData)
            val campaignId = jsonData.optString("campaign_id")
            val userSegment = jsonData.optString("segment")
            
            Log.d("SingularLink", "Campaign ID: $campaignId")
            Log.d("SingularLink", "User Segment: $userSegment")
        }
    }

모든 쿼리 파라미터 전달

_forward_params=2 파라미터를 추가하여 추적 링크 URL에서 모든 쿼리 파라미터를 캡처합니다.

_forward_params=2 을 추적 링크에 추가하면 모든 쿼리 파라미터가 SingularLinkHandler의 deeplink 파라미터에 포함되므로 모든 파라미터가 포함된 전체 URL에 액세스할 수 있습니다.

추적 링크 예시:
https://yourapp.sng.link/A1b2c/abc123?_dl=myapp://product/123&_forward_params=2&utm_source=facebook&promo=SALE2024

Singular링크 핸들러가 수신합니다:
deeplink = "myapp://product/123?utm_source=facebook&promo=SALE2024"