Firebase Dynamic Links: 개념, 링크 생성 및 통합

저자: IT Sectr 게시일: 2026-04-29 읽는 시간: 9 분

Firebase Dynamic Links는 사용자를 모바일 앱 내의 올바른 위치나 웹사이트로 안내하는 스마트 링크를 생성하는 Google 서비스입니다. 기기에 앱이 설치되어 있는지 여부에 따라 작동합니다. Dynamic Links는 앱 스토어에서 설치한 후 첫 실행 시에도 전환 컨텍스트를 유지합니다. Firebase 문서, 2026에 따르면 동적 링크는 단일 API에서 처리되며 앱 열기, 웹사이트 이동 또는 앱 설치 동작을 자동으로 결정합니다. 이 서비스는 추천 프로그램, 온보딩 시나리오 및 마케팅 캠페인에 필수적입니다.

주요 포인트

  • Dynamic Links — 앱을 설치할지 또는 이미 설치된 앱을 원하는 화면에서 열지를 자동으로 결정하는 스마트 링크입니다.
  • Deferred Deep Linking — 설치 후 첫 실행 시 전환 컨텍스트 유지: 사용자가 메인 화면 대신 대상 화면을 봅니다.
  • 링크 도메인 — Firebase Console에서 브랜딩할 수 있는 your-app.page.link 형식의 사용자 정의 도메인입니다.
  • 클라이언트 측 처리 — 링크는 Android 및 iOS용 Firebase Dynamic Links SDK를 통해 처리되며 인수가 intent 또는 scene에 전달됩니다.
  • 분석 — Firebase는 Dynamic Links를 통한 클릭, 설치 및 전환에 대한 통계를 자동으로 수집합니다.

Firebase Dynamic Links는 모바일 앱 또는 웹사이트에서 원하는 콘텐츠로 연결되는 단일 링크를 생성하는 Google 기술입니다. 플랫폼과 설치 상태에 따라 동작을 조정합니다. 링크는 기기에 앱이 설치되어 있는지 확인하고, 설치된 경우 매개변수를 전달하여 앱을 열고, 설치되지 않은 경우 Google Play 또는 App Store로 리디렉션하여 설치 후 대상 화면으로 리디렉션합니다.

핵심 기능: Deferred Deep Linking

일반 딥 링크에 비해 Dynamic Links의 주요 장점은 지연 딥 링크 지원입니다. Deferred Deep Linking은 앱이 아직 설치되지 않은 경우에도 전환 컨텍스트(링크 매개변수)가 유지됨을 의미합니다. 사용자가 스토어에서 앱을 설치하면 Dynamic Links SDK가 저장된 컨텍스트를 읽고 원하는 화면에 전달합니다. 이 기술이 없으면 사용자는 설치 후 메인 화면에만 도착하여 프로모션 코드, 초대장 또는 특정 주문 링크를 잃게 됩니다.

사용 사례

Dynamic Links는 추천 프로그램에서 초대자의 계정에 연결된 새 사용자를 유치하는 데 사용됩니다. 마케팅 캠페인은 이메일 뉴스레터 및 소셜 네트워크에서의 전환에 Dynamic Links를 사용하여 정확한 전환 측정을 수행합니다. 온보딩 시나리오에서는 링크가 새 사용자를 개인화된 콘텐츠가 있는 환영 화면으로 안내합니다. 전자상거래에서는 제품 링크가 컨텍스트를 유지하며 설치 후 첫 실행 시에도 제품 카드로 연결됩니다.

Dynamic Links의 작동 메커니즘은 여러 단계로 구성되며 각 단계는 앱 상태에 따라 달라질 수 있습니다. 사용자가 동적 링크를 클릭하면 브라우저가 Firebase 서버에 요청을 보냅니다. Firebase는 intent-filter 또는 universal link 확인을 통해 앱이 설치되었는지 확인합니다. 앱이 설치된 경우 Firebase는 딥 링크를 전달하여 앱을 엽니다. 설치되지 않은 경우 스토어 페이지 또는 웹 버전으로 리디렉션합니다.

동적 링크의 구조

표준 Dynamic Link는 기본 URL, 링크 매개변수 및 선택적 마케팅 태그로 구성됩니다. 기본 URL은 Firebase Console에 등록된 your-app.page.link 형식의 도메인입니다. 딥 링크 매개변수는 쿼리 매개변수를 통해 설정됩니다: link(앱 내 대상 URL), apn(Android 패키지 이름), ibi(iOS 번들 ID), st 및 sd(소셜 미리보기용 제목 및 설명). 마케팅 태그 utm_source, utm_medium, utm_campaign은 추적을 위해 Google Analytics로 전달됩니다.

매개변수설명예시
link대상 딥 링크https://yourapp.page.link/product/123
apnAndroid 패키지 이름com.example.myapp
ibiiOS 번들 IDcom.example.myapp.ios
st소셜 제목특별 혜택
sd소셜 설명첫 주문 30% 할인

Firebase Console은 Engage > Dynamic Links 섹션에서 Dynamic Links를 생성하기 위한 시각적 인터페이스를 제공합니다. 콘솔에서 딥 링크, 웹 동작, 소셜 메타데이터 및 UTM 태그를 포함한 모든 링크 매개변수를 설정할 수 있습니다. 링크 생성 후 콘솔은 사용 가능한 URL과 함께 클릭 및 전환 통계를 제공합니다. 대량 링크 생성을 위해 OAuth 2.0 인증이 있는 Firebase Dynamic Links REST API가 사용됩니다.

REST API를 통한 링크 생성

프로그래밍 방식으로 Dynamic Links를 생성하려면 Firebase Dynamic Links API에 POST 요청이 전송됩니다. 요청 본문에는 딥 링크 매개변수, 플랫폼 설정 및 소셜 메타데이터가 포함된 dynamicLinkInfo가 포함됩니다. API는 https://your-app.page.link/abc123 형식의 사용 가능한 URL을 반환합니다. 장기 링크의 경우 suffix.option = UNIQUE(고유 접미사가 있는 짧은 링크)가 사용됩니다. 임시 링크의 경우 SHORT(충돌 가능성 있음)가 사용됩니다.

js
const axios = require("axios")

const apiUrl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY"

const data = {
    dynamicLinkInfo: {
        domainUriPrefix: "https://yourapp.page.link",
        link: "https://yourapp.com/promo/summer",
        androidInfo: { androidPackageName: "com.example.myapp" },
        iosInfo: { iosBundleId: "com.example.myapp.ios" },
        socialMetaTagInfo: {
            socialTitle: "여름 프로모션",
            socialDescription: "월말까지 최대 50% 할인"
        }
    },
    suffix: { option: "UNIQUE" }
}

axios.post(apiUrl, data)
    .then(res => console.log(res.data.shortLink))
    .catch(err => console.error(err))

짧은 링크 및 UTM 태그

Dynamic Links는 도메인 뒤에 6~8자의 짧은 URL을 자동으로 생성하여 SMS 및 소셜 네트워크에서 사용하기 적합하게 만듭니다. UTM 매개변수는 utmParameters 필드 또는 link 매개변수에 직접 추가됩니다. Firebase는 Dynamic Links의 클릭을 Firebase용 Google Analytics에 자동으로 연결하여 추천 트래픽 및 캠페인 속성 추적을 가능하게 합니다.

Android에 Dynamic Links 통합

Android에서 Dynamic Links 설정에는 Firebase SDK 추가, 딥 링크를 수신하는 activity의 intent-filter 구성, Firebase Dynamic Links SDK를 통한 링크 처리가 포함됩니다. SDK 설치 및 google-services.json 추가 후 앱 도메인의 링크를 처리하기 위해 AndroidManifest.xml에 intent-filter가 있는 activity를 등록해야 합니다.

AndroidManifest에서 intent-filter 설정

Dynamic Links를 처리하는 activity에는 VIEW 작업과 DEFAULT 및 BROWSABLE 범주에 대한 intent-filter가 있어야 합니다. AndroidManifest.xml에는 딥 링크와 일치하는 android:scheme, android:host 및 android:pathPrefix가 있는 data 태그가 포함됩니다. page.link 도메인의 링크를 처리하려면 https 체계와 Dynamic Links 도메인 호스트가 있는 intent-filter도 추가됩니다.

xml
<!-- AndroidManifest.xml -->
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name=
            "android.intent.action.VIEW" />
        <category android:name=
            "android.intent.category.DEFAULT" />
        <category android:name=
            "android.intent.category.BROWSABLE" />
        <data android:scheme="https"
            android:host="yourapp.com"
            android:pathPrefix="/promo" />
    </intent-filter>
</activity>

코드에서 링크 처리

intent-filter 설정 후 Activity 코드에서 수신된 Dynamic Link를 처리해야 합니다. FirebaseDynamicLinks API는 intent에서 링크를 수신하고 추출된 매개변수가 있는 PendingDynamicLinkData 객체를 반환합니다. getLink 메서드는 대상 딥 링크를 반환하며 구문 분석하여 탐색에 사용할 수 있습니다. 콜드 스타트(onCreate의 getIntent 통해)와 핫 스타트(onNewIntent 통해) 모두에서 링크를 처리하는 것이 중요합니다.

iOS에 Dynamic Links 통합

iOS에서 Dynamic Links 설정에는 Firebase 측과 Xcode 프로젝트 모두에서 구성이 필요합니다. Firebase Console에 APNs 키를 업로드하고, Swift Package Manager 또는 CocoaPods를 통해 Firebase SDK를 추가하고, Universal Links를 처리하도록 App Delegate를 구성해야 합니다. iOS의 Dynamic Links는 중간 페이지 없이 브라우저와 앱 간의 원활한 전환을 위해 Universal Links를 사용합니다.

Universal Links 설정

Universal Links는 도메인을 모바일 앱에 연결하는 Apple 기술입니다. apple-app-site-association(AASA) 파일은 https://your-app.page.link/apple-app-site-association의 서버에 업로드됩니다. Firebase는 Dynamic Links 도메인에 대해 이 파일을 자동으로 생성하고 유지 관리합니다. Xcode에서 Associated Domains를 활성화하고 프로젝트 Capabilities에서 applinks:your-app.page.link를 지정해야 합니다.

Firebase SDK를 통한 링크 처리

iOS의 경우 Dynamic Links 처리는 App Delegate 또는 Scene Delegate에서 Firebase SDK를 통해 수행됩니다. application:continueUserActivity: 메서드는 수신된 Universal Link를 가로채서 Firebase Dynamic Links API에 전달하여 대상 링크와 매개변수를 추출합니다. Firebase SDK는 Firebase Installation API 단기 저장소를 통해 설치 데이터를 요청하여 Deferred Deep Links를 자동으로 처리합니다.

swift
import FirebaseDynamicLinks

class AppDelegate: UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        continue userActivity: NSUserActivity,
        restorationHandler: @escaping
            ([UIUserActivityRestoring]?) -> Void
    ) -> Bool {
        return DynamicLinks.dynamicLinks()
            .handleUniversalLink(userActivity.webpageURL!) {
                dynamicLink, error in
                if let link = dynamicLink?.url {
                    self.handleDeepLink(link)
                }
            }
    }
}

Kotlin 구현 예제

Kotlin을 사용한 Android 앱에서 Dynamic Link 처리의 전체 예제를 살펴보겠습니다. MainActivity는 앱의 콜드 스타트와 핫 스타트 모두에서 수신된 Dynamic Link를 읽습니다. 링크는 매개변수로 구문 분석되어 인수를 전달하여 원하는 화면으로 탐색하는 데 사용됩니다. 예제는 프로모션 캠페인 식별자가 있는 프로모션 페이지 링크 처리를 보여줍니다.

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        handleDynamicLink(intent)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        handleDynamicLink(intent)
    }

    private fun handleDynamicLink(intent: Intent) {
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(intent)
            .addOnSuccessListener { data ->
                val deepLink = data?.link ?: return@addOnSuccessListener
                val promoId = deepLink
                    .getQueryParameter("promoId") ?: ""
                if (promoId.isNotEmpty()) {
                    navigateToPromoScreen(promoId)
                }
            }
            .addOnFailureListener { e ->
                Log.e("DL", "링크 처리 오류", e)
            }
    }
}

Dynamic Links 테스트

Dynamic Links 테스트에는 Firebase Console이 사용됩니다. 테스트 링크를 만들어 메신저나 이메일을 통해 기기로 보낼 수 있습니다. Firebase Dynamic Links 디버거는 https://your-app.page.link/?d=1에서 사용할 수 있으며 링크 동작에 대한 자세한 정보를 표시합니다. Deferred Deep Links를 테스트할 때는 앱이 제거되었는지 확인하고 설치 후 링크가 전달된 매개변수와 함께 올바른 화면으로 연결되는지 확인해야 합니다.

자주 묻는 질문

Dynamic Links와 일반 딥 링크의 차이점은 무엇인가요?

일반 딥 링크는 앱이 설치된 경우에만 작동하며 설치 후 컨텍스트를 유지하지 않습니다. Dynamic Links는 Deferred Deep Linking을 지원하여 사용자가 앱을 설치하면 저장된 링크 매개변수와 함께 즉시 대상 화면으로 이동합니다.

Dynamic Links 작동에 서버가 필요한가요?

링크 생성 및 처리에 서버가 필요하지 않습니다 — 모든 작업은 Firebase Console, REST API 또는 클라이언트 측 Firebase SDK를 통해 수행됩니다. 대량 링크 생성에는 REST API가 권장되지만 수동 생성에는 콘솔이 적합합니다.

Dynamic Link의 수명은 얼마나 되나요?

Dynamic Links에는 만료 기한이 없습니다 — 수동으로 삭제하지 않는 한 Firebase에 영구적으로 저장됩니다. UNIQUE 접미사가 있는 짧은 링크는 무기한 존재합니다. 정확한 속성 추적을 위해 각 캠페인마다 고유한 링크를 만드는 것이 좋습니다.

Dynamic Links는 인터넷 없이 작동하나요?

Dynamic Link 처리에는 Firebase 서버가 앱 설치 상태를 확인하기 때문에 클릭 시 인터넷 연결이 필요합니다. 링크 처리 후 데이터는 intent 또는 Universal Link를 통해 앱으로 전달되며 오프라인에서도 사용할 수 있습니다.

Firebase Dynamic Links 비용은 얼마인가요?

Firebase Dynamic Links는 Spark 요금제에서 무료입니다. Blaze 요금제에서는 추가 비용 없이 프로젝트당 하루 50,000클릭 한도가 있습니다. 한도를 초과하면 다음 날까지 새 링크 생성이 차단됩니다.

요약

  • Firebase Dynamic Links — 사용자를 앱 또는 웹사이트로 안내하고, 앱이 없는 경우 설치 후 컨텍스트를 유지하여 스토어로 안내하는 스마트 링크입니다.
  • Deferred Deep Linking — 설치 후 첫 실행 시 컨텍스트(프로모션 코드, 초대장, 제품 링크)를 전달할 수 있는 주요 이점입니다.
  • 링크 구조에는 기본 도메인(your-app.page.link), 딥 링크 매개변수, 플랫폼 설정 및 미리보기용 소셜 메타데이터가 포함됩니다.
  • 링크 생성은 Google Analytics와의 통합을 위한 UTM 태그 지원과 함께 Firebase Console, REST API 또는 Firebase SDK를 통해 수행됩니다.
  • Android 통합은 AndroidManifest에서 intent-filter 설정과 콜드 및 핫 스타트를 지원하는 FirebaseDynamicLinks API를 통한 처리가 필요합니다.
  • iOS 통합은 AASA 파일, Associated Domains 및 AppDelegate 또는 SceneDelegate에서 DynamicLinks SDK를 통한 처리와 함께 Universal Links를 사용합니다.
  • 무료 — 하루 최대 50,000클릭, 링크 만료 없음, 링크 브랜딩을 위한 사용자 정의 도메인 생성 기능.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기