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 Console 및 열려 있는 C++ 프로젝트 모두에서 작업을 수행해야 합니다. 예를 들어 Console에서 Firebase 구성 파일을 다운로드한 후 이 파일을 C++ 프로젝트로 옮기는 작업이 필요합니다.
Android
- Firebase Console에서 동적 링크 섹션을 엽니다.
아직 서비스 약관에 동의하지 않았고 동적 링크의 URI 프리픽스도 설정하지 않았다면 관련 메시지가 표시될 때 동의하고 설정합니다.
동적 링크 URI 프리픽스가 이미 있다면 기록해 둡니다. 프로그래매틱 방식으로 동적 링크를 만들 때 동적 링크 URI 프리픽스를 제공해야 합니다.
- 권장: 딥 링크 및 대체 링크에 허용되는 URL 패턴을 지정합니다. 이렇게 하면 승인되지 않은 사용자가 내 도메인에서 내가 제어하지 않는 사이트로 리디렉션되는 동적 링크를 만드는 것을 막을 수 있습니다. URL 패턴 허용을 참조하세요.
iOS
- Firebase Console에서 동적 링크 섹션을 엽니다.
아직 서비스 약관에 동의하지 않았고 동적 링크의 URI 프리픽스도 설정하지 않았다면 관련 메시지가 표시될 때 동의하고 설정합니다.
동적 링크 URI 프리픽스가 이미 있다면 기록해 둡니다. 프로그래매틱 방식으로 동적 링크를 만들 때 동적 링크 도메인을 제공해야 합니다.
- Firebase 동적 링크 C++ 클라이언트 라이브러리는 iOS의 커스텀 URL 스킴을 사용하여 링크를 처리합니다. 동적 링크 수신을 지원하려면 앱에 커스텀 URL 스킴을 추가해야 합니다.
- 왼쪽 트리 보기에서 프로젝트 이름을 더블클릭하여 프로젝트 구성을 엽니다. 대상 섹션에서 앱을 선택하고 정보 탭을 선택한 후 URL 유형 섹션을 펼칩니다.
- + 버튼을 클릭하고 반전된 클라이언트 ID의 URL 스킴을 추가합니다. 이 값을 찾으려면
구성 파일을 열고GoogleService-Info.plist REVERSED_CLIENT_ID
키를 찾습니다. 이 키의 값을 복사하여 구성 페이지의 URL 스킴 상자에 붙여넣습니다. 다른 필드는 비워 둡니다. - + 버튼을 클릭하고 두 번째 URL 스킴을 추가합니다. 이 스킴은 앱의 번들 ID와 동일합니다. 예를 들어 번들 ID가
com.example.ios
이면 URL 스킴 상자에 이 값을 입력합니다. 앱의 번들 ID는 프로젝트 구성의 일반 탭에서 찾을 수 있습니다(ID > 번들 식별자).
Firebase Console 사용
테스트에 사용하거나 마케팅팀에서 소셜 미디어 게시물 등에 사용할 수 있는 링크를 쉽게 만들 수 있도록 동적 링크 1개를 생성하려고 할 때 가장 간단한 방법은 Firebase Console로 이동하여 단계별 양식에 따라 직접 만드는 것입니다.
커스텀 도메인
goo.gl
또는 page.link
하위 도메인 대신 자체 도메인을 사용하여 동적 링크 브랜딩을 보다 세부적으로 관리할 수 있습니다. 다음 안내에 따라 프로젝트의 커스텀 도메인을 설정하세요.
Firebase Dynamic Links API 사용
앱 만들기 및 초기화
동적 링크를 만들기 전에 우선 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::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
를 작성합니다.
GetShortLink
는 PathLength
를 갖는 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()); } }