Android에서 Firebase 동적 링크 수신

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

Firebase 및 동적 링크 SDK 설정

  • Android 프로젝트에 Firebase를 추가합니다. 앱 수준 build.gradle 파일에 Firebase 동적 링크에 대한 종속 항목을 추가합니다.
    implementation 'com.google.firebase:firebase-dynamic-links:16.1.3'
  • 아직 Firebase 프로젝트에 앱을 연결하지 않았다면 Firebase 콘솔에서 연결합니다.
  • Firebase 콘솔에서 동적 링크 섹션을 엽니다. 서비스 약관에 동의하라는 메시지가 표시되면 약관에 동의합니다.

딥 링크에 대한 인텐트 필터 추가

일반 딥 링크와 마찬가지로 앱의 딥 링크를 처리하는 액티비티에 인텐트 필터를 새로 추가해야 합니다. 앱이 설치되어 있으면 동적 링크가 사용자 도메인으로 리디렉션되므로 인텐트 필터는 사용자 도메인의 딥 링크를 인식하게 됩니다. 이렇게 하려면 Play 스토어에서 앱을 설치/업데이트하고 계속 버튼을 탭한 후 앱에서 동적 링크 데이터를 수신해야 합니다. 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="yoursite.example.com" android:scheme="http"/>
    <data android:host="yoursite.example.com" android:scheme="https"/>
</intent-filter>

지정한 스키마 및 호스트로 연결되는 딥 링크로 동적 링크를 사용자가 열면 앱에서 이 인텐트 필터로 링크를 처리하는 활동을 시작합니다.

딥 링크를 수신하려면 getDynamicLink() 메소드를 호출합니다.

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);
            }
        });

getDynamicLink()를 사용하여 인텐트에서 링크를 알아낼 수도 있지만, 링크로 인해 실행될 수 있는 모든 활동에서 getIntent().getData()를 호출해야 합니다. getDynamicLink()를 호출하면 링크가 검색되고 데이터가 삭제되므로 앱에서 한 번만 처리됩니다.

일반적으로 메인 활동뿐 아니라 링크와 일치하는 인텐트 필터가 실행하는 모든 활동에서 getDynamicLink()를 호출합니다.

애널리틱스 기록

Firebase용 Google 애널리틱스는 다음 이벤트를 자동으로 추적하여 Firebase 콘솔에 표시할 수 있습니다.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

이러한 이벤트를 등록하려면 딥 링크를 검색하기 전에 Firebase용 Google 애널리틱스를 구성해야 합니다. 다음 조건에 맞는지 확인하세요.

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

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.page.link" android:scheme="http"/>
    <data android:host="example.page.link" android:scheme="https"/>
</intent-filter>

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

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

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

동적 링크가 앱으로 바로 전송됩니다. 딥 링크 처리에 설명되어 있는 것과 같이 앱 링크 인텐트 필터를 추가한 활동에서 getDynamicLink()를 호출하여 딥 링크 및 기타 동적 링크 데이터를 가져올 수 있습니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.