콘솔로 이동

C++용 Firebase 동적 링크 시작하기

Firebase 동적 링크는 사용자가 앱을 설치했는지 여부에 관계없이 앱으로 연결되는 딥 링크입니다. 사용자가 설치되지 않은 앱으로 연결되는 동적 링크를 열면 앱을 설치할 수 있는 앱 스토어 페이지가 열립니다. 사용자가 앱을 설치한 후 열면 앱에서 딥 링크가 가리키는 콘텐츠가 표시됩니다.

C++로 교차 플랫폼 Firebase 동적 링크 클라이언트 앱을 개발하려면 Firebase 초대 C++ API를 사용합니다.

C++ SDK는 Android 및 iOS와 연동이 가능하며 각 플랫폼에 대해 몇 가지 설정이 추가로 필요합니다.

시작하기 전에

Android

  1. 아직 Firebase 프로젝트에 앱을 연결하지 않은 경우 Firebase 콘솔에서 연결합니다.
  2. Android 프로젝트에 Firebase를 추가합니다.
  3. 앱 수준 build.gradle 파일에 Firebase 초대에 대한 종속 항목을 추가합니다.
    dependencies {
         compile 'com.google.firebase:firebase-invites:10.0.1'
    }
  4. C++ SDK에서 libapp.alibinvites.a 정적 라이브러리를 링크합니다.

iOS

  1. 아직 Firebase 프로젝트에 앱을 연결하지 않은 경우 Firebase 콘솔에서 연결합니다.
  2. iOS 프로젝트에 Firebase를 추가합니다.
  3. Firebase 초대 C++ 클라이언트 라이브러리는 iOS의 맞춤 URL 스키마를 사용하여 링크를 처리합니다. 동적 링크를 수신하려면 앱에 맞춤 URL 스미카를 추가해야 합니다.
    1. 왼쪽 트리 보기에서 프로젝트 이름을 두 번 클릭하여 프로젝트 구성을 엽니다. TARGETS 섹션에서 앱을 선택하고 Info 탭을 선택한 후 URL Types 섹션을 펼칩니다.
    2. + 버튼을 클릭하고 반전된 클라이언트 ID의 URL 스키마를 추가합니다. 이 값을 찾으려면 GoogleService-Info.plist 구성 파일을 열고 REVERSED_CLIENT_ID 키를 찾습니다. 이 키의 값을 복사하여 구성 페이지의 URL Schemes 상자에 붙여넣습니다. 다른 필드는 비워 둡니다.
    3. + 버튼을 클릭하고 두 번째 URL 스키마를 추가합니다. 이 스키마는 앱의 번들 ID와 동일합니다. 예를 들어 번들 ID가 com.example.app이면 URL Scheumes 상자에 이 값을 입력합니다. 앱의 번들 ID는 프로젝트 구성의 General 탭에서 찾을 수 있습니다(Identity > Bundle Identifier).
  4. Podfile에 다음 Pod를 포함합니다.
    pod 'Firebase/Invites'
  5. pod install을 실행합니다.
  6. C++ SDK에서 firebase.frameworkfirebase_invites.framework를 Xcode 프로젝트에 추가합니다.

동적 링크 수신

앱 만들기 및 초기화

수신된 동적 링크를 확인하기 전에 우선 firebase::App 개체를 만들고 초기화해야 합니다.

firebase::App의 헤더 파일을 포함합니다.

#include "firebase/app.h"

다음 단계는 플랫폼에 따라 다릅니다.

Android

firebase::App을 만들고 JNI 환경 및 Java Activity를 가리키는 jobject 참조를 인수로 전달합니다.

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS

firebase::App을 만듭니다.

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

동적 링크를 확인하는 리스너 구현

Firebase 초대 C++ 라이브러리는 동적 링크 수신에도 사용됩니다. 수신된 동적 링크를 확인하려면 firebase::invites::Listener 클래스를 구현하여 사용합니다.

초대 수신을 위한 헤더 파일을 포함합니다.

#include "firebase/invites.h"

초대 라이브러리를 초기화합니다.

::firebase::invites::Initialize(app);

firebase::invites::Listener를 구현하는 개체를 만들고 SetListener()로 초대 라이브러리에 제공합니다.

초대를 수신하려면 리스너 클래스가 OnInviteReceived 가상 함수를 구현해야 합니다. 메소드를 재정의하면 딥 링크가 수신된 경우를 처리할 수 있습니다.

void OnInviteReceived(const char* invitation_id, const char* deep_link,
                      bool is_strong_match) override {
  if (deep_link != nullptr) {
    // The app received a Dynamic Link. This may have come from an invitation
    // (if invite.invitation_id is set), or it might have been sent using
    // Firebase Dynamic Links.
    // In any event, the app can now act on this link as you see fit.
  }
  if (invitation_id != nullptr) {
    // We received an invitation ID. See the Firebase Invites documentation
    // for more information.
  }
}

동적 링크 만들기

동적 링크를 만드는 가장 쉬운 방법은 Firebase 콘솔을 사용하는 것입니다. 동적 링크 매개변수를 포함하는 URL을 작성하여 프로그래밍 방식으로 동적 링크를 만들 수도 있습니다.

Firebase 콘솔에서 동적 링크 만들기

  1. Firebase 콘솔을 엽니다.
  2. 사이드바 메뉴에서 동적 링크를 클릭하여 동적 링크 페이지를 엽니다. 이 페이지에서 동적 링크 목록과 클릭률을 확인할 수 있습니다.
  3. 새 동적 링크를 클릭하고 동적 링크 생성을 선택합니다.
  4. 동적 링크의 기본적인 정보를 제공합니다.
    기본적인 동적 링크 매개변수
    링크 이름 동적 링크의 이름입니다.
    링크 URL

    앱에서 열리는 링크입니다. 앱의 콘텐츠로 연결되는 링크, 사용자에게 쿠폰 지급과 같은 앱의 특정 로직을 시작하는 URL, 특정한 시작 화면을 표시하는 URL과 같이 앱이 처리할 수 있는 모든 URL을 지정할 수 있습니다. 이 링크는 올바른 형식의 URL이어야 하고, 적절한 URL 인코딩을 적용해야 하며, HTTP 또는 HTTPS 스키마를 사용해야 합니다.

    Android 앱 링크를 여는 데 사용할 Android 앱의 패키지 이름입니다. Firebase 콘솔의 개요 페이지에서 앱을 프로젝트에 연결해야 합니다. 동적 링크를 통해 Android 앱을 여는 데 필요합니다.
    iOS 앱 링크를 여는 데 사용할 iOS 앱의 번들 ID입니다. Firebase 콘솔의 개요 페이지에서 앱을 프로젝트에 연결해야 합니다. 동적 링크를 통해 iOS 앱을 여는 데 필요합니다.
    이러한 매개변수를 지정하면 기본 기능을 갖춘 동적 링크가 만들어집니다. 지정된 앱에서 링크를 열 수 있으며, 앱이 설치되지 않은 경우 우선 앱을 설치하도록 안내합니다.
  5. 선택사항: 고급 옵션을 지정하여 동적 링크의 동작을 세밀하게 조정할 수 있습니다.
    고급 Android 매개변수
    대체 링크 앱이 설치되지 않은 경우에 열리는 링크입니다. 앱이 설치되지 않았을 때 Play 스토어에서 앱을 설치하는 것 이외에 콘텐츠의 모바일 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.
    최소 버전 코드 링크를 열 수 있는 앱의 최소 버전의 versionCode입니다. 설치된 앱이 이전 버전인 경우 앱을 업그레이드하기 위해 Play 스토어로 이동합니다.
    고급 iOS 매개변수
    대체 링크 앱이 설치되지 않은 경우에 열게 되는 링크입니다. 앱이 설치되지 않았을 때 App Store에서 앱을 설치하는 것 이외에 콘텐츠의 모바일 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.
    iOS 맞춤 스키마 앱의 번들 ID와 다른 값으로 정의하면 앱의 맞춤 URL 스키마로 사용됩니다.
    iPad 앱 iPad에서 링크를 여는 데 사용할 iOS 앱의 번들 ID입니다. Firebase 콘솔의 개요 페이지에서 앱을 프로젝트에 연결해야 합니다.
    iPad 대체 링크 앱이 설치되지 않은 경우 iPad에서 열리는 링크입니다. 앱이 설치되지 않았을 때 App Store에서 앱을 설치하는 것 이외에 콘텐츠의 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.

프로그래밍 방식으로 동적 링크 만들기

다음 형식으로 URL을 작성하여 프로그래밍 방식으로 동적 링크를 만들 수도 있습니다.

https://app_code.app.goo.gl/?link=your_deep_link&apn=package_name[&amv=minimum_version][&al=android_link][&afl=fallback_link]
Android 매개변수
link

앱에서 열리는 링크입니다. 앱의 콘텐츠로 연결되는 링크, 사용자에게 쿠폰 지급과 같은 앱의 특정 로직을 시작하는 URL, 특정한 시작 화면을 표시하는 URL과 같이 앱이 처리할 수 있는 모든 URL을 지정할 수 있습니다. 이 링크는 올바른 형식의 URL이어야 하고, 적절한 URL 인코딩을 적용해야 하며, HTTP 또는 HTTPS 스키마를 사용해야 합니다.

apn 링크를 여는 데 사용할 Android 앱의 패키지 이름입니다. Firebase 콘솔의 개요 페이지에서 앱을 프로젝트에 연결해야 합니다. 동적 링크를 통해 Android 앱을 여는 데 필요합니다.
afl 선택사항: 앱이 설치되지 않은 경우에 열리는 링크입니다. 앱이 설치되지 않았을 때 Play 스토어에서 앱을 설치하는 것 이외에 콘텐츠의 모바일 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.
amv 선택사항: 링크를 열 수 있는 앱의 최소 버전에 대한 versionCode입니다. 설치된 앱이 이전 버전인 경우 앱을 업그레이드하기 위해 Play 스토어로 이동합니다.
  • utm_source
  • utm_medium
  • utm_campaign
  • utm_term
  • utm_content
  • gclid
선택사항: 맞춤 캠페인 매개변수입니다. 이러한 매개변수는 딥 링크 및 Play 스토어 링크의 referrer 매개변수로 전달됩니다.
iOS 매개변수
link

앱에서 열리는 링크입니다. 앱의 콘텐츠로 연결되는 링크, 사용자에게 쿠폰 지급과 같은 앱의 특정 로직을 시작하는 URL, 특정한 시작 화면을 표시하는 URL과 같이 앱이 처리할 수 있는 모든 URL을 지정할 수 있습니다. 이 링크는 올바른 형식의 URL이어야 하고, 적절한 URL 인코딩을 적용해야 하며, HTTP 또는 HTTPS 스키마를 사용해야 합니다.

ibi 링크를 여는 데 사용할 iOS 앱의 번들 ID입니다. Firebase 콘솔의 개요 페이지에서 앱을 프로젝트에 연결해야 합니다. 동적 링크를 통해 iOS 앱을 여는 데 필요합니다.
ius 선택사항: 앱의 번들 ID와 다른 값으로 정의하면 앱의 맞춤 URL 스키마로 사용됩니다.
ifl 선택사항: 앱이 설치되지 않은 경우에 열리는 링크입니다. 앱이 설치되지 않았을 때 App Store에서 앱을 설치하는 것 이외에 콘텐츠의 모바일 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.
ipbi 선택사항: iPad에서 링크를 여는 데 사용할 iOS 앱의 번들 ID입니다. Firebase 콘솔의 개요 페이지에서 앱을 프로젝트에 연결해야 합니다.
ipfl 선택사항: 앱이 설치되지 않은 경우 iPad에서 열리는 링크입니다. 앱이 설치되지 않았을 때 App Store에서 앱을 설치하는 것 이외에 콘텐츠의 웹 버전 열기, 앱 홍보 페이지 표시 등의 다른 작업을 수행하려는 경우 이 매개변수를 지정합니다.
  • utm_source
  • utm_medium
  • utm_campaign
  • utm_term
  • utm_content
  • gclid
선택사항: 맞춤 캠페인 매개변수입니다. 이러한 매개변수는 App Store로 전달됩니다.
  • at
  • ct
  • mt
  • pt
선택사항: App Store 제휴사 링크 매개변수입니다. 이러한 매개변수는 App Store로 전달됩니다.
d 선택사항: 동적 링크를 로드하는 대신 다양한 플랫폼과 구성에서 동적 링크의 동작을 미리 확인하는 데 사용할 수 있는 플로 차트를 생성합니다.

예를 들면 다음과 같습니다.

https://example.app.goo.gl/?link=https://www.example.com/someresource&apn=com.example.android&amv=3

동적 링크 디버그

자동으로 생성된 플로 차트를 통해 다양한 플랫폼과 구성에서 동적 링크의 동작을 미리 확인하면 동적 링크를 디버그하는 데 도움이 됩니다. 긴 동적 링크에 d=1 매개변수를 추가하여 플로 차트를 생성하세요.

Analytics 데이터 보기

프로모션 및 캠페인의 효과를 측정할 수 있도록 앱에서 짧은 동적 링크를 열 때 다음과 같은 Analytics 이벤트가 자동으로 기록됩니다. 짧은 동적 링크는 Firebase 콘솔에서 만들 수 있습니다.

Analytics 이벤트
dynamic_link_first_open 사용자가 동적 링크를 통해 처음으로 앱을 열 때 기록됩니다.
dynamic_link_app_open 사용자가 동적 링크를 통해 앱을 열 때 기록됩니다.
dynamic_link_app_update 동적 링크를 통해 앱이 새 버전으로 업데이트될 때 기록됩니다. Android 전용입니다.

이후에 Firebase 콘솔의 Analytics 섹션에서 기록된 데이터를 볼 수 있습니다.

Firebase Analytics의 동적 링크 이벤트 동적 링크 이벤트를 전환으로 표시하면 기여 페이지에서 동적 링크의 실적을 확인할 수 있습니다.