TIL

[TIL] Kotlin Firebase Dynamic Link ( 2025.08 Deprecated )

정상호소인 2023. 10. 18. 23:59

Topic =  Firebase Dynamic Link 를 통해 공유, 초대링크 만들기

 

 


 

Why - Firebase Dynamic Link  - 앱 설치 여부와 상관없이 여러 플랫폼에서 작동할 수 있는 앱 링크

Dynamic Link

   Dynamic Link란 Firebase에서 제공하는 기능으로 기존의 Deep Link의 단점과 문제들을 해결하여 대체제로 나온 Link 생성 기능이다. Deep Link는 링크에 대한 처리 로직을 개발자가 직접 구현해야 하는 반면, Dynamic Link는 링크 처리 로직을 Firebase SDK로 자동으로 처리할 수 있도록 할 수 있으며, 링크에 대한 메타 데이터를 설정하여 동적으로 Data 를 변경할 수 있으며 앱이 설치되지 않은 경우에도 웹 페이지로 리디렉션하는 기능도 지원할 수 있다.

   Dynamic Link의 장점을 정리해보자면 이와 같다.

  • 멀티 플랫폼 지원
    • Dynamic Link는 하나의 링크로 웹, IOS와 Android 플랫폼 모두에서 정상적으로 작동이 가능하다.
  • 딥링크 지원
    • 링크 클릭 시 앱이 바로 링크 화면으로 전환될 수 있는 기능을 지원한다.

이미지 출처 : https://skyfox83.tistory.com/567

    • 이와 더불어서 Dynamic Link는 지연된 딥 링크 ( Deferred Deep Link )를 지원하는데, 딥 링크를 클릭할 경우 앱이 이미 설치가 된 경우에는 링크에 해당하는 Page로 이동하지만, 앱이 설치되어 있지 않은 경우에는 앱을 다운로드 받을 수 있는 Store로 앱을 이동하여 다운로드 받을 수 있도록 하고, 다운로드 받은 후 앱이 실행되었을 시 Dynamic Link에 해당하는 화면으로 바로 이동할 수 있도록 해주는 기능이다.
  • 소셜 공유 및 타게팅
    • SNS, Email 등을 통해 링크를 공유하는 경우 등에서 사용자의 공유 동작을 추적하고 분석할 수 있다. 광고, 마케팅 등에대한 분석에 도움을 준다.
  • 스마트 딥링크 처리
    • Firebase SDK는 앱이 실행될 때 개발자가 별도로 딥링크 처리 로직을 구현하지 않아도 Dynamic Link를 자동으로 처리한다.

 

 

Dynamic Link가 2025년 8월 까지 서비스 한다고 해도 그 전까지 사용하지 않을 것도 아니며, Migration을 해야하는 상황이 있을 수 있는데 Dynamic Link 기능이 무엇인지를 알아야 마이그레이션을 수월하게 할 수 있기 때문에 배워두는 것도 나쁘지 않을 것 같다.

 

 

 

FDL( Firebase Dynamic Link )  사용하기

 

[ 1 ] Firebase Project 생성하기

 

Firebase | Google’s Mobile and Web App Development Platform

개발자가 사용자가 좋아할 만한 앱과 게임을 빌드하도록 지원하는 Google의 모바일 및 웹 앱 개발 플랫폼인 Firebase에 대해 알아보세요.

firebase.google.com

  • 해당 링크에 접속 후 Firebase Project가 없다면 Firebase 프로젝트 생성 해주고 이미 프로젝트가 있다면, [ 2 ] Dynamic Link 추가하기로 넘어가자 ( 아직 게시글 안에서 목차 링크 넘기는 기능 구현을 못해서 직접 넘겨야 한다 )

 

 

  • 프로젝트 생성이 완료되었으면 Android 프로젝트와 연동시켜줘야 한다. Firebase 콘솔 대쉬보드에 표시한 그림 클릭해서 Android Project와 연동해주도록 하자.
  • Dynamic Link는 SHA-1 key를 지정해야 한다고 한다
  • 프로젝트 추가 중 SHA-1 Key를 선택적으로 넣을 수 있는데 Google Login 등 OAuth2.0 인증이 필요한 Firebase Service를 사용하기 위해선 필요하다. 이미 발급받은 SHA-1 Key를 등록해주거나 Key를 확인 후 넣어주어 프로젝트 생성 해주도록 하자
  • SHA-1 Key 확인하는 방법은 아래 링크에서 확인
 

[Sub TIL] android Studio / window 명령 프롬프트에서 sha-1 debugkey 발급하기

android Studio / 명령 프롬프트에서 sha-1 debugkey 발급하기 해당 내용은 틈틈이 다시 찾아볼 내용 같아서 Main TIL에서 분리하여 Sub로 따로 작성. [ Android Studio 내부에서 확인하는 방법 ] Ctrl 키 2번 누르

junes-daily.tistory.com

 

 

[ 2 ] FDL Service 추가하기

  • Dynamic Link는 Firebase Console 좌측 참여 카테고리 안에 위치해있다.

 

  • Dynamic Link탭에 들어가서 계속하기 버튼 클릭 시 Dynamic Link 기본 설정을 할 수 있는데 입력란 클릭 시 아래에 Project 이름.page.link 로 Google에서 제공하는 도메인이 나오는데 별도로 도메인이 있지 않으면 Google에서 제공하는 도메인을 사용해주도록 하자.
    • Firebase에서 제공해주는 프로젝트명.page.link 도메인을 사용하지 않을 경우, HTTPS 프로토콜을 사용하는 SSL 인증서가 적용된 도메인을 사용해야 하며, 사용자 등록 도메인과 FDL 서비스 간에 연결을 위해 DNS 레코드를 설정해야 하는 등 추가 작업을 해야한다.
  • Google에서 제공하는 도메인을 사용 시 바로 ④ 완료 단계로 넘어간다.

다음에 나오는 화면에서 새 동적 링크를 클릭하여 Dynamic Link를 생성해주도록 하자.

  • 본인이 원하는대로 작성하면 되고 상관 없다면 예시로 제공해주는대로 생성해주면 된다.

 

 

[ 3 ] Android Studio 에서 Dynamic Link 생성하기

 

 

build.gradle , Manifest

 

builld,gradle ( module )

dependencies {
    implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
    implementation ("com.google.firebase:firebase-dynamic-links-ktx")
    implementation ("com.google.firebase:firebase-analytics-ktx")
    
    ...
}

 

Manifest

        <activity
            android:name="링크에 적용할 Activity"
            android:exported="true">
            <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:host="sharedream.page.link"
                    android:pathPrefix="/KPo2"
                    android:scheme="https"/>

                <data
                    android:host="sharedream.page.link"
                    android:pathPrefix="/KPo2"
                    android:scheme="http"/>
            </intent-filter>
        </activity>
  • Dynamic 링크를 통해 화면에 띄울 Activity내부에 intent filter로 intent를 정의해주고, data에 새 동적링크로 생성해둔 주소를 host, pathPrefix, scheme로 나누어 입력 해준다 

 

Activity.kt
    private fun checkInviteLink(){
        Firebase.dynamicLinks
            .getDynamicLink(intent)
            .addOnSuccessListener(this) { pendingDynamicLinkData ->
                var deeplink: Uri? = null
                if(pendingDynamicLinkData != null) {
                    deeplink = pendingDynamicLinkData.link
                }

                if(deeplink != null) {
                    // DeepLink를 통해서 들어올 경우 이벤트 처리
                    Toast.makeText(this,"DeepLink Test 입니다",Toast.LENGTH_LONG).show()
                }
                else {
                    Log.d("xxxx", "getDynamicLink: no link found")
                }
            }
            .addOnFailureListener(this) { e -> Log.w("xxxx", "getDynamicLink:onFailure", e) }
    }
  • 해당 함수 선언 후 Manifest에서 지정한 Activity 의 onCreate() 내부에서 실행할 수 있도록 해주자.

 

설정이 끝나면 Firebase Console에서 생성해둔 동적 링크 URL을 통해 앱을 실행할 수 있다.

 

➕ DeepLink는 주로 MainActivity에 직접적으로 연결되지 않고 별도로 DeepLink Activity로 이동 후 DeepLinkActivity 내에서 다른 Activity로 이동시키도록 한다. 

 


 

[ A. 오늘 복습한 내용 / B. 다음에 학습할 내용 ]

A. X

 

B. Intent 매번 나와서 파봐야 겠다고 생각하는데 다른 기능하느라 바빠서 파보지 못하고 있다.

 

B. 앱 스플라이어가 FDL 대체제로 많이 사용된다고 한다.

 


 

[오류,에러 등등]

1. DynamicLink 불러오기 오류

 

2. SHA-1 Key 문제로 인해서 Dynamic Link 확인이 안되고 있어서 해결하면 추가 예정

 

 

 


 

[느낀 점]

1. Firebase Project 생성하는 글은 다음부턴 따로 Firebase Project 생성 글을 만들어서 링크를 걸어야겠다

 

2. 오류가 너무 자주 난다.

 

 

 

 


[Reference]

 

// Dynamic Link 

https://skyfox83.tistory.com/567

https://anora.tistory.com/18