Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Android에서 Firebase 동적 링크 수신

생성 한 Firebase 동적 링크를 수신하려면 앱에 동적 링크 SDK를 포함하고 동적 링크에 전달된 데이터를 가져오기 위해 앱이 로드될 때 FirebaseDynamicLinks.getDynamicLink() 메서드를 호출해야 합니다.

  1. 아직 Android 프로젝트에 Firebase를 추가 하지 않았다면 추가합니다.

    앱을 등록할 때 SHA-1 서명 키를 지정하십시오. 앱 링크를 사용하는 경우 SHA-256 키도 지정하십시오.

  2. 모듈(앱 수준) Gradle 파일 (일반적으로 <project>/<app-module>/build.gradle )에서 Dynamic Links Android 라이브러리에 대한 종속성을 추가합니다. Firebase Android BoM 을 사용하여 라이브러리 버전 관리를 제어하는 ​​것이 좋습니다.

    최적의 동적 링크 경험을 위해 Firebase 프로젝트에서 Google 애널리틱스를 활성화 하고 앱에 Google 애널리틱스용 Firebase SDK를 추가하는 것이 좋습니다.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    Firebase Android BoM 을 사용하면 앱에서 항상 호환되는 Firebase Android 라이브러리 버전을 사용합니다.

    (또는) BoM을 사용 하지 않고 Firebase 라이브러리 종속성을 추가합니다.

    Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.

    앱에서 여러 Firebase 라이브러리를 사용하는 경우 모든 버전이 호환되도록 BoM을 사용하여 라이브러리 버전을 관리하는 것이 좋습니다.

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:21.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Firebase Android BoM 을 사용하면 앱에서 항상 호환되는 Firebase Android 라이브러리 버전을 사용합니다.

    (또는) BoM을 사용 하지 않고 Firebase 라이브러리 종속성을 추가합니다.

    Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.

    앱에서 여러 Firebase 라이브러리를 사용하는 경우 모든 버전이 호환되도록 BoM을 사용하여 라이브러리 버전을 관리하는 것이 좋습니다.

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    
  3. Firebase 콘솔 에서 동적 링크 섹션을 엽니다. 메시지가 표시되면 서비스 약관에 동의합니다.

일반 딥 링크 와 마찬가지로 앱의 딥 링크를 처리하는 활동에 새 인텐트 필터를 추가해야 합니다. 앱이 설치된 경우 동적 링크가 도메인으로 리디렉션되므로 인텐트 필터는 도메인의 딥 링크를 포착해야 합니다. 이는 앱이 Play 스토어에서 설치/업데이트되고 계속 버튼을 탭한 후 Dynamic Link 데이터를 수신하는 데 필요합니다. AndroidManifest.xml 에서:

<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="example.com"
        android:scheme="https"/>
</intent-filter>

사용자가 지정한 체계 및 호스트에 대한 딥 링크가 있는 동적 링크를 열면 앱이 이 인텐트 필터로 활동을 시작하여 링크를 처리합니다.

딥 링크를 수신하려면 getDynamicLink() 메서드를 호출하세요.

Java

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
            @Override
            public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                // Get deep link from result (may be null if no link is found)
                Uri deepLink = null;
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.getLink();
                }


                // Handle the deep link. For example, open the linked
                // content, or apply promotional credit to the user's
                // account.
                // ...

                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "getDynamicLink:onFailure", e);
            }
        });

Kotlin+KTX

Firebase.dynamicLinks
    .getDynamicLink(intent)
    .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? ->
        // Get deep link from result (may be null if no link is found)
        var deepLink: Uri? = null
        if (pendingDynamicLinkData != null) {
            deepLink = pendingDynamicLinkData.link
        }

        // Handle the deep link. For example, open the linked
        // content, or apply promotional credit to the user's
        // account.
        // ...

    }
    .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }

getIntent().getData() 를 사용하여 인텐트에서 링크를 사용할 수 있더라도 링크에 의해 시작될 수 있는 모든 활동에서 getDynamicLink() 를 호출해야 합니다. getDynamicLink() 를 호출하면 링크를 검색하고 해당 데이터를 지우므로 앱에서 한 번만 처리됩니다.

일반적으로 기본 활동 및 링크와 일치하는 인텐트 필터에 의해 시작된 모든 활동에서 getDynamicLink() 를 호출합니다.

기록 분석

다음 이벤트는 Google 애널리틱스에서 자동으로 추적되고 Firebase 콘솔에 표시될 수 있습니다.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

이러한 이벤트를 등록하려면 딥 링크를 검색하기 전에 Google Analytics를 구성해야 합니다. 다음 조건이 충족되는지 확인하십시오.

  • 앱 진입점에서 FirebaseDynamicLinks.getDynamicLink() 를 호출합니다.
    • 런처 활동. 예: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • 활동 진입점. 예: onStart() , onCreate() .
    • 딥링크 활동.
  • Google 애널리틱스 설정 및 사용:
    • Google 애널리틱스 종속성을 포함합니다. 이것은 일반적으로 google-services Gradle 플러그인에 의해 자동으로 추가됩니다.
    • 앱에 google-services.json 구성 파일을 포함합니다 .
    • FirebaseAnalytics.getInstance() FirebaseDynamicLinks.getDynamicLink() 호출하십시오.

Android 6.0(API 레벨 23) 이상에서는 Android 앱 링크 를 사용하여 앱이 이미 설치된 경우 동적 링크를 직접 처리하도록 앱을 설정할 수 있습니다.

Firebase 콘솔 에서 앱의 SHA256 인증서 지문을 프로젝트에 추가했는지 확인합니다. 동적 링크는 동적 링크 도메인에 대한 앱 링크 웹사이트 연결 설정을 처리합니다.

동적 링크를 처리할 활동에 자동 확인된 인텐트 필터를 추가 하고 Firebase 콘솔에 있는 프로젝트의 동적 링크 도메인으로 호스트를 설정합니다. AndroidManifest.xml 에서:

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:host="example.com/link" android:scheme="http"/>
    <data android:host="example.com/link" android:scheme="https"/>
</intent-filter>

android:host 는 딥 링크의 도메인이 아니라 동적 링크 도메인으로 설정해야 합니다.

앱 링크가 작동하려면 매니페스트의 모든 autoVerify 텐트 필터를 등록해야 합니다. Firebase는 동적 링크 도메인에 대해 이를 자동으로 처리하지만 동적 링크 도메인에서 호스팅되는 assetlinks.json 파일을 열어 확인할 수 있습니다.

https://YOUR_DOMAIN/.well-known/assetlinks.json
모든 Firebase 앱의 패키지 이름이 포함되어야 합니다.

이제 동적 링크가 앱으로 직접 전송됩니다. 앱 링크 인텐트 필터를 추가한 활동에서 getDynamicLink() 를 호출하여 딥 링크 및 기타 동적 링크 데이터를 가져올 수 있습니다( 딥 링크 처리 에 설명된 대로).

참고: 앱 링크를 통해 호출하면 사용자가 앱으로 직접 이동하므로 동적 링크는 필요한 최소 버전을 사용할 수 없습니다. 따라서 앱이 열리면 Dynamic Link의 최소 버전( getminimumappversion )과 PackageInfo.versionCode 를 비교하고 필요한 경우 getUpdateAppIntent 를 사용하여 앱을 업그레이드하도록 사용자를 리디렉션해야 합니다.