Firebase dynamic link를 사용해보자 - 1

HEETAE HEO·2023년 3월 5일
0
post-thumbnail

공유하기 기능을 구현하기 위해 Firebase dynamic link를 이용해야 하는 일이 생겨 급히 해당 내용에 대해서 공부하기 시작했습니다.

해당 기능을 구현하기 위해서는 다음과 같은 Process가 있습니다.

구현 절차

  1. Firebase console에서 Dynamic Link를 설정합니다.

  2. Firebase SDK를 프로젝트에 추가해줍니다.

  3. AndroidManifest.xml 파일에서 intent filter를 설정하여 deep link를 처리할 Activity에 등록해줍니다.

  4. Firebase Dynamic Link를 생성합니다.

  5. Dynamic Link가 클릭되었을 때, 앱이 설치되어 있지 않은 경우, 구글 플레이로 이동하고 설치되어 있다면 특정 화면으로 이동시켜주는 로직을 생성해줍니다.

오늘은 2번 부터 4번까지에 대해서 작성해보려고 합니다. (1,5번은 조금 더 공부를.....)

2. Firebase SDK를 프로젝트에 추가해줍니다.

// app/build.gradle 파일에 추가
implementation 'com.google.firebase:firebase-dynamic-links-ktx:20.0.0'

3. AndroidManifest.xml 파일에서 intent filter를 설정하여 deep link를 처리할 Activity를 등록합니다.

<!-- deeplink를 처리할 activity를 등록 -->
<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" />

        <!-- app 링크 스키마에 맞게 설정 -->
        <data
            android:host="activity.com"
            android:pathPrefix="/path"
            android:scheme="https" />
    </intent-filter>
</activity>

intent-filter 태그를 추가해서 deep link 수신을 처리할 수 잇는 액티비티로 지정을 해주고 data 태그를 사용하여 deep link의 스키마와 호스팅, 경로 등을 지정할 수 있습니다.

만약에 스키마가 https 이고 호스트가 activity.com, 경로가 path 가 되는 것입니다.

class DynamicLinkUtil {

    companion object {
        fun createDynamicLink(): Task<ShortDynamicLink> {
            val dynamicLink = Firebase.dynamicLinks.dynamicLink {
                link = Uri.parse("https://main.com/path")
                setDomainUriPrefix("https://main.page.link")
                setAndroidParameters(
                    DynamicLink.AndroidParameters.Builder(BuildConfig.APPLICATION_ID)
                        .setMinimumVersion(1)
                        .build()
                )
            }

            return dynamicLink.shortLink
        }
    }
}

위의 코드는 Firebase Dynamic Link를 생성하는 유틸리티 클래스입니다.
Firebase.dynamicLinks.dynamicLink를 호출하여 DynamicLink.Builder 객체를 생성하고 그 내부의 link 속성에 앱에서 열리길 원하는 deep linke를 지정합니다.

setDomainUriPrefix 메서드를 호출하여 Firebase Console에서 등록한 도메인 URI 접두사를 설정합니다. 이 설정은 Firebase Dynamic Link의 동작을 위해 필요합니다. Firebase Console에서 도메인 URI 접두사를 등록하지 않으면, Firebase Dynamic Link가 작동하지 않습니다.

setAndroidParameters 메서드를 호출하여 Android에서 Dynamic Link를 열었을 때의 동작을 설정합니다. setMininumVersion안에 최소 앱 동작 버전을 넣어줄 수 있고 setFallbackUrl, setPackageName, setSocialMetaTagParameters 등의 메서드를 사용할 수 있습니다.
다음과 같이 선언하면 Dynamic Link를 열었을 때의 동작을 더욱 세부적으로 설정이 가능합니다.

마지막으로 dynamicLink.shortLink를 호출하여 생성된 Dynamic Link를 Short Dynamic Link로 변환합니다. 이때 반환 값으로 Task<ShortDynamicLink.> 타입의 객체를 반환하므로, 실제 Short Dynamic Link를 얻기 위해서는 해당 Task를 처리해야 합니다. 예를 들어 addOnSuccessListener를 호출하여 Task 처리 결과에 따른 동작을 선언할 수있습니다.

마치며

처음 구현하는 만큼 실수 하는게 없나 하는 걱정에 자료를 더욱더 찾아보게 되네요... 1번과 5번도 얼른 공부를 해 구현을 하고 글을 적을 수 있도록 노력하겠습니다. 읽어주셔서 감사합니다

profile
Android 개발 잘하고 싶어요!!!

0개의 댓글