Firebase Dynamic Links の API を使用して短いダイナミック リンクまたは長いダイナミック リンクを作成できます。この API でリンクを作成する際、オプションとして複数のパラメータ構造体を渡すことができます。短いリンクは、生成済みの長いリンクから作成することもできます。Firebase Dynamic Links では、次のような URL が生成されます。
https://example.page.link/WXYZ
Android と iOS それぞれに必要な設定を追加すれば、両方のプラットフォームで C++ SDK を機能させることができます。
始める前に
Firebase Dynamic Links を使用するには以下の作業が必要です。
C++ プロジェクトを登録して Firebase を使用するように構成します。
C++ プロジェクトですでに Firebase を使用している場合、この登録と構成はすでに行われています。
Firebase C++ SDK を C++ プロジェクトに追加します。
Firebase を C++ プロジェクトに追加するには、Firebase コンソールと開いている C++ プロジェクトの両方でこのタスクを行う必要があります(コンソールから Firebase 構成ファイルをダウンロードして C++ プロジェクトに移動するなど)。
Android
- Firebase コンソールで [Dynamic Links] セクションを開きます。
利用規約に同意せずに Dynamic Links の URI 接頭辞を設定している場合、プロンプトに従って利用規約に同意します。
Dynamic Links の URI 接頭辞がすでに存在する場合は、それをメモしておきます。ダイナミック リンクをプログラムで作成する場合は、ダイナミック リンクの URI 接頭辞を指定する必要があります。
- 推奨: ディープリンクやフォールバック リンクで許可される URL パターンを指定します。これにより、お客様のドメインからお客様の管理外のサイトへリダイレクトする Dynamic Links が不正ユーザーによって作成されるのを防止できます。URL パターンをホワイトリストに登録するをご覧ください。
iOS
- Firebase コンソールで [Dynamic Links] セクションを開きます。
利用規約に同意せずに Dynamic Links の URI 接頭辞を設定している場合、プロンプトに従って利用規約に同意します。
Dynamic Links の URI 接頭辞がすでに存在する場合は、それをメモしておきます。Dynamic Links をプログラムで作成する場合は、Dynamic Links ドメインを指定する必要があります。
- iOS では、Firebase Dynamic Links の C++ クライアント ライブラリはカスタム URL スキームを使用してリンクを処理します。Dynamic Links の受信に対応したアプリにするには、カスタム URL スキームをアプリに追加する必要があります。
- 左側のツリービューでプロジェクト名をダブルクリックしてプロジェクト構成を開きます。[ターゲット] セクションでアプリを選択し、[情報] タブを開いて [URL タイプ] セクションを展開します。
- [+] ボタンをクリックし、反転クライアント ID の URL スキームを追加します。この値を確認するには、
構成ファイルを開いてGoogleService-Info.plist REVERSED_CLIENT_ID
キーを探します。見つかったキーの値をコピーし、構成ページの [URL スキーム] ボックスに貼り付けます。その他の入力欄は空白にしておきます。 - [+] ボタンをクリックし、2 個目の URL スキームを追加します。これはアプリのバンドル ID と同じです。たとえば、バンドル ID が
com.example.ios
であれば、その値を [URL スキーム] ボックスに入力します。アプリのバンドル ID はプロジェクト構成の [全般] タブ([ID] > [バンドル ID])で確認できます。
Firebase コンソールを使用する
テスト用に、またはマーケティング チームがソーシャル メディア投稿などで使用できるリンクを簡単に作成できるよう、単一の Dynamic Links を生成する必要がある場合、Firebase コンソールを開き、各手順が示されたフォームに沿って手動で作成するのが最も簡単です。
カスタム ドメイン
Dynamic Links のブランディングを詳細に管理するには、goo.gl
または page.link
サブドメインではなく、独自のドメインを使用します。プロジェクトのカスタム ドメインを設定するには、こちらの手順に沿って行ってください。
Firebase Dynamic Links API の使用
アプリを作成して初期化する
Dynamic Links を作成するには、まず firebase::App
オブジェクトを作成して初期化しておく必要があります。
firebase::App
のヘッダー ファイルを追加します。
#include "firebase/app.h"
この次の手順はプラットフォームによって異なります。
Android
firebase::App
を作成し、引数として JNI 環境と jobject
参照を Java アクティビティに渡します。
app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);
iOS
firebase::App
を作成します。
app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));
Dynamic Links ライブラリを初期化する
ダイナミック リンクを作成するには、まず Dynamic Links ライブラリを初期化しておく必要があります。
::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);
短い Dynamic Links を作成する
短いダイナミック リンクを作成するには、生成済みの長いリンクを 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 回)実行される更新ループがプログラムに含まれている場合、更新されるたびに 1 回結果を確認できます。
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()); } }