C++로 동적 링크 수신

생성한 Firebase 동적 링크를 수신하려면 앱에 동적 링크 SDK를 포함하고 OnDynamicLinkReceived 가상 함수를 구현하는 firebase::dynamic_links::Listener 객체를 생성해야 합니다.

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

시작하기 전에

Firebase 동적 링크를 사용하려면 먼저 다음 작업을 해야 합니다.

  • C++ 프로젝트를 등록하고 Firebase를 사용하도록 구성합니다.

    C++ 프로젝트에서 현재 Firebase를 사용하고 있다면 이미 등록되어 Firebase용으로 구성된 것입니다.

  • 프로젝트 수준 build.gradle 파일의 buildscriptallprojects 섹션에 Google의 Maven 저장소가 포함되어야 합니다.

  • C++ 프로젝트에 Firebase C++ SDK를 추가합니다.

C++ 프로젝트에 Firebase를 추가할 때 Firebase Console 및 열려 있는 C++ 프로젝트 모두에서 작업을 수행해야 합니다. 예를 들어 Console에서 Firebase 구성 파일을 다운로드한 후 이 파일을 C++ 프로젝트로 이동하는 작업이 필요합니다.

맞춤 URL 스키마 추가(iOS에만 해당)

Firebase 동적 링크 C++ 클라이언트 라이브러리는 iOS의 맞춤 URL 스키마를 사용하여 링크를 처리합니다. 동적 링크 수신을 지원하려면 앱에 커스텀 URL 스키마를 추가해야 합니다.

  1. 왼쪽 트리 보기에서 프로젝트 이름을 더블클릭하여 프로젝트 구성을 엽니다.

  2. 대상 섹션에서 앱을 선택하고 정보 탭을 선택한 후 URL 유형 섹션을 펼칩니다.

  3. + 버튼을 클릭하고 반전된 클라이언트 ID의 URL 스키마를 추가합니다. 이 값을 찾는 방법은 다음과 같습니다.

    1. GoogleService-Info.plist 구성 파일을 열고 REVERSED_CLIENT_ID 키를 찾습니다.

    2. 이 키의 값을 복사하여 구성 페이지의 URL 스키마 상자에 붙여넣습니다.

    3. 다른 필드는 비워 둡니다.

  4. + 버튼을 클릭하고 두 번째 URL 스키마를 추가합니다. 이 스키마는 앱의 번들 ID와 동일합니다.

    예를 들어 번들 ID가 com.example.ios이면 URL 스키마 상자에 이 값을 입력합니다.

    앱의 번들 ID는 프로젝트 구성의 일반 탭에서 찾을 수 있습니다(ID > 번들 식별자).

동적 링크 수신

앱 만들기 및 초기화

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

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

#include "firebase/app.h"

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

Android

JNI 환경과 자바 액티비티를 가리키는 jobject 참조를 인수로 전달하여 firebase::App을 만듭니다.

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

iOS

firebase::App을 만듭니다.

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

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

수신된 동적 링크를 확인하려면 firebase::dynamic_links::Listener 클래스를 구현하여 사용합니다.

동적 링크 수신을 위한 헤더 파일을 포함합니다.

#include "firebase/dynamic_links.h"

동적 링크 라이브러리를 초기화합니다.

::firebase::dynamic_links::Initialize(app, null);

firebase::dynamic_links::Listener를 구현하는 객체를 만든 후 SetListener()를 사용하여 동적 링크 라이브러리를 제공하거나 Initialize에 두 번째 인수로 전달합니다.

동적 링크를 수신하려면 Listener 클래스가 OnDynamicLinkReceived 가상 함수를 구현해야 합니다. 메서드를 재정의하면 딥 링크를 수신했을 때 처리가 가능합니다.

class Listener : public firebase::dynamic_links::Listener {
 public:
  // Called on the client when a dynamic link arrives.
  void OnDynamicLinkReceived(
      const firebase::dynamic_links::DynamicLink* dynamic_link) override {
    printf("Received link: %s", dynamic_link->url.c_str());
  }
};