C++로 동적 링크 만들기

Firebase Dynamic Links API를 사용하여 짧거나 긴 동적 링크를 만들 수 있습니다. 이 API는 선택사항인 몇 가지 매개변수 구조체를 취하여 링크를 작성합니다. 이전에 생성한 긴 링크로부터 짧은 링크를 만들 수도 있습니다. Firebase 동적 링크에서는 다음과 같은 URL을 생성합니다.

https://example.page.link/WXYZ

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

시작하기 전에

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

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

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

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

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

Android

  1. Firebase 콘솔에서 동적 링크 섹션을 엽니다.
  2. 아직 서비스 약관에 동의하지 않았고 동적 링크의 도메인도 설정하지 않았다면 관련 메시지가 표시될 때 동의하고 설정합니다.

    동적 링크 도메인이 있다면 기록해 둡니다. 프로그래매틱 방식으로 동적 링크를 만들 때 동적 링크 도메인을 제공해야 합니다.

  3. 권장: 딥 링크 및 대체 링크에 허용되는 URL 패턴을 지정합니다. 이렇게 하면 승인되지 않은 당사자가 내 도메인에서 내가 제어하지 않는 사이트로 리디렉션되는 동적 링크를 만드는 것을 막을 수 있습니다. URL 패턴 허용을 참조하세요.

iOS

  1. Firebase 콘솔에서 동적 링크 섹션을 엽니다.
  2. 아직 서비스 약관에 동의하지 않았고 동적 링크의 도메인도 설정하지 않았다면 관련 메시지가 표시될 때 동의하고 설정합니다.

    동적 링크 도메인이 있다면 기록해 둡니다. 프로그래매틱 방식으로 동적 링크를 만들 때 동적 링크 도메인을 제공해야 합니다.

  3. Firebase 동적 링크 C++ 클라이언트 라이브러리는 iOS의 맞춤 URL 스키마를 사용하여 링크를 처리합니다. 동적 링크 수신을 지원하려면 앱에 맞춤 URL 스키마를 추가해야 합니다.
    1. 왼쪽 트리 보기에서 프로젝트 이름을 두 번 클릭하여 프로젝트 구성을 엽니다. 대상 섹션에서 앱을 선택하고 정보 탭을 선택한 후 URL 유형 섹션을 펼칩니다.
    2. + 버튼을 클릭하고 반전된 클라이언트 ID의 URL 스키마를 추가합니다. 이 값을 찾으려면 GoogleService-Info.plist 구성 파일을 열고 REVERSED_CLIENT_ID 키를 찾습니다. 이 키의 값을 복사하여 구성 페이지의 URL 스키마 상자에 붙여넣습니다. 다른 필드는 비워 둡니다.
    3. + 버튼을 클릭하고 두 번째 URL 스키마를 추가합니다. 이 스키마는 앱의 번들 ID와 동일합니다. 예를 들어 번들 ID가 com.example.ios이면 URL 스키마 상자에 이 값을 입력합니다. 앱의 번들 ID는 프로젝트 구성의 General 탭에서 찾을 수 있습니다(Identity > Bundle Identifier).

Firebase 콘솔 사용

테스트를 하거나 마케팅팀에서 소셜 미디어 게시물 등에 사용할 수 있는 링크를 쉽게 만들 수 있도록 동적 링크 1개를 생성하려고 할 때 가장 간단한 방법은 Firebase 콘솔로 이동하여 단계별 양식에 따라 직접 만드는 것입니다.

Firebase Dynamic Links API 사용

앱 만들기 및 초기화

동적 링크를 만들기 전에 우선 firebase::App 객체를 만들고 초기화해야 합니다.

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

#include "firebase/app.h"

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

Android

자바 액티비티를 가리키는 jobject 참조와 JNI 환경을 인수로 전달하여 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::Initialize(app, null);

매개변수로 긴 동적 링크 만들기

동적 링크를 만들려면 DynamicLinkComponents 개체를 만들고 추가 구성을 위한 선택적 멤버를 설정한 후 dynamic_links::GetShortLink 또는 dynamic_links::GetLongLink에 전달합니다.

다음은 Android 앱 com.example.android.package_name 및 iOS 앱 com.example.ios에서 https://www.example.com/을 여는 긴 동적 링크를 만드는 간단한 예제입니다.

firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios");

firebase::dynamic_links::AndroidParameters android_parameters(
    "com.example.android.package_name");

firebase::dynamic_links::DynamicLinkComponents components(
    "https://www.example.com/", "example.page.link");
components.android_parameters = &android_parameters;
components.ios_parameters = &ios_parameters;

firebase::dynamic_links::GeneratedDynamicLink long_link =
    firebase::dynamic_links::GetLongLink(components);

짧은 동적 링크 만들기

짧은 동적 링크를 만들려면 이전에 생성한 긴 링크를 GetShortLink에 전달하거나 위와 동일한 방법으로 DynamicLinkComponents를 작성합니다.

GetShortLinkPathLength를 갖는 DynamicLinkOptions 구성 매개변수를 선택적으로 취하며, 이를 통해 링크 생성 방법을 제어할 수 있습니다. 짧은 링크를 생성하려면 Firebase 백엔드에 대한 네트워크 요청이 필요하므로 GetShortLink는 비동기적이며 Future<GeneratedLink>를 반환합니다.

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

firebase::dynamic_links::DynamicLinkOptions short_link_options;
short_link_options.path_length = firebase::dynamic_links::kPathLengthShort;

firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result =
    firebase::dynamic_links::GetShortLink(components, short_link_options);

프로그램에 정기적으로 실행되는 업데이트 루프(예: 초당 30회 또는 60회)가 있으면 업데이트할 때마다 한 번씩 결과를 확인할 수 있습니다.

if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) {
    firebase::dynamic_links::GeneratedDynamicLink link = *result.result();
    printf("Create short link succeeded: %s\n", link.url.c_str());
  } else {
    printf("Created short link failed with error '%s'\n",
           result.error_message());
  }
}

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

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