Firebase Dynamic Links Builder API を使用して、短い、もしくは長い Dynamic Links を作成できます。この API は、長い Dynamic Link または Dynamic Link パラメータを含むオブジェクトのいずれかを受け入れ、次の例のような URL を返します。
https://example.com/link/WXYZ https://example.page.link/WXYZ
Firebase と Dynamic Links SDK を設定する
Android アプリで Dynamic Links を作成する前に、Firebase SDK をインクルードしておく必要があります。アプリが Dynamic Links を受信するように設定されている場合、この手順はすでに完了しているため、このセクションをスキップして構いません。
まだ追加していない場合は、Firebase を Android プロジェクトに追加します。
アプリを登録するときは、SHA-1 の署名鍵を指定してください。アプリリンクを使用する場合は SHA-256 の鍵も指定します。
-
モジュール(アプリレベル)の Gradle ファイル(通常は
<project>/<app-module>/build.gradle.kts
または<project>/<app-module>/build.gradle
)に、Android 用 Dynamic Links ライブラリの依存関係を追加します。ライブラリのバージョニングの制御には、Firebase Android BoM を使用することをおすすめします。Dynamic Links でのエクスペリエンスを最適化するために、Firebase プロジェクトで Google Analytics を有効にして、Google アナリティクス用の Firebase SDK をアプリに追加することをおすすめします。
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.6.0")) // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links' implementation 'com.google.firebase:firebase-analytics' }
Firebase Android BoM を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。
(代替方法)BoM を使用せずに Firebase ライブラリの依存関係を追加する
Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。
アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、BoM を使用してライブラリのバージョンを管理することを強くおすすめします。
dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links:22.1.0' implementation 'com.google.firebase:firebase-analytics:22.1.2' }
- Firebase コンソールで [Dynamic Links] セクションを開きます。
-
利用規約に同意せずに Dynamic Links のドメインを設定している場合、プロンプトに従って利用規約に同意します。
Dynamic Links のドメインが作成済みである場合は、それをメモしておきます。Dynamic Links をプログラムで作成する場合は、Dynamic Links ドメインを指定する必要があります。
- 推奨: ディープリンクやフォールバック リンクで許可する URL パターンを指定します。これにより、不正なユーザーがお客様のドメインからお客様の管理外のサイトへリダイレクトする Dynamic Links を作成することを防ぎます。 特定の URL パターンを許可するをご覧ください。
Firebase コンソール の使用
テスト用や、マーケティング チームがソーシャル メディア投稿用にリンクを簡単に作成できるよう、単一の Dynamic Link を生成したい場合、Firebase コンソールを開き、各手順が示されたフォームに沿って手動で作成するのが最も簡単です。
パラメータから Dynamic Link を作成する
Dynamic Link を作成するには、Builder で新しい DynamicLink
オブジェクトを作成します。このとき、Builder メソッドで Dynamic Link のパラメータを指定します。次に、buildDynamicLink
または buildShortDynamicLink
を呼び出します。
次のシンプルな例では、Android アプリ(Android の場合)とアプリ com.example.ios
(iOS の場合)で開く https://www.example.com/
への長い Dynamic Link を作成します。
Kotlin+KTX
val dynamicLink = Firebase.dynamicLinks.dynamicLink { link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" // Open links with this app on Android androidParameters { } // Open links with com.example.ios on iOS iosParameters("com.example.ios") { } } val dynamicLinkUri = dynamicLink.uri
Java
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") // Open links with this app on Android .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build()) // Open links with com.example.ios on iOS .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build()) .buildDynamicLink(); Uri dynamicLinkUri = dynamicLink.getUri();
短い Dynamic Link を作成するには、同じ方法で DynamicLink
を作成してから buildShortDynamicLink
を呼び出します。短いリンクの作成にはネットワーク呼び出しが必要となるため、buildShortDynamicLink
はリンクを直接返すのではなく、Task
を返します。これにより、リクエストが完了したときに短いリンクが利用可能になります。次に例を示します。
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync { link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" // Set parameters // ... }.addOnSuccessListener { (shortLink, flowchartLink) -> // You'll need to import com.google.firebase.dynamiclinks.component1 and // com.google.firebase.dynamiclinks.component2 // Short link created processShortLink(shortLink, flowchartLink) }.addOnFailureListener { // Error // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") // Set parameters // ... .buildShortDynamicLink() .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() { @Override public void onComplete(@NonNull Task<ShortDynamicLink> task) { if (task.isSuccessful()) { // Short link created Uri shortLink = task.getResult().getShortLink(); Uri flowchartLink = task.getResult().getPreviewLink(); } else { // Error // ... } } });
デフォルトでは、短い Dynamic Links は 17 文字のリンク サフィックス付きで生成されるため、他の誰かが有効な Dynamic Link を推測することはほぼ不可能です。アプリの使用状況を考慮したうえで、短いリンクが他者に知られても無害だと判断できる場合、一意にするために必要な最短のサフィックスを生成できます。そのようなサフィックスを生成するには、ShortDynamicLink.Suffix.SHORT
を buildShortDynamicLink
メソッドに渡します。
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) { // Set parameters // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() // ... .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT); // ...
Dynamic Link パラメータ
Dynamic Link Builder API を使用して、サポートされている任意のパラメータが設定された Dynamic Links を作成できます。詳細については、API リファレンスを参照してください。
次の例では、いくつかの一般的なパラメータが設定された Dynamic Link を作成します。
Kotlin+KTX
val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" androidParameters("com.example.android") { minimumVersion = 125 } iosParameters("com.example.ios") { appStoreId = "123456789" minimumVersion = "1.0.1" } googleAnalyticsParameters { source = "orkut" medium = "social" campaign = "example-promo" } itunesConnectAnalyticsParameters { providerToken = "123456" campaignToken = "example-promo" } socialMetaTagParameters { title = "Example of a Dynamic Link" description = "This link works whether the app is installed or not!" } }
Java
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") .setAndroidParameters( new DynamicLink.AndroidParameters.Builder("com.example.android") .setMinimumVersion(125) .build()) .setIosParameters( new DynamicLink.IosParameters.Builder("com.example.ios") .setAppStoreId("123456789") .setMinimumVersion("1.0.1") .build()) .setGoogleAnalyticsParameters( new DynamicLink.GoogleAnalyticsParameters.Builder() .setSource("orkut") .setMedium("social") .setCampaign("example-promo") .build()) .setItunesConnectAnalyticsParameters( new DynamicLink.ItunesConnectAnalyticsParameters.Builder() .setProviderToken("123456") .setCampaignToken("example-promo") .build()) .setSocialMetaTagParameters( new DynamicLink.SocialMetaTagParameters.Builder() .setTitle("Example of a Dynamic Link") .setDescription("This link works whether the app is installed or not!") .build()) .buildDynamicLink(); // Or buildShortDynamicLink()
Dynamic Link のパラメータは、次のメソッドで設定できます。
DynamicLink のパラメータ | |
---|---|
setLink |
アプリで開くリンク。アプリで処理可能な URL を指定します。通常、この URL はアプリ固有のロジック(ユーザーへのクーポン付与や特定の開始画面の表示など)を起動するアプリのコンテンツやペイロードへのリンクです。このリンクは適切な形式の URL で、正しく URL エンコードされている必要があります。HTTP または HTTPS のいずれかを使用してください。他のダイナミック リンクは使用できません。 |
setDomainUriPrefix | Dynamic Link の URL 接頭辞。Firebase コンソールで確認できます。
Dynamic Link ドメインは次の例のようになります。
https://example.com/link https://example.page.link |
AndroidParameters | |
---|---|
setFallbackUrl | アプリがインストールされていない場合に開くリンク。モバイルウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに Play ストアからアプリをインストールする以外の動作を指定できます。 |
setMinimumVersion | リンクを開くことができるアプリの最小バージョンの versionCode 。インストールされているアプリのバージョンがそれよりも古い場合、ユーザーは Play ストアにリダイレクトされ、アプリのアップグレードを促されます。 |
IosParameters | |
---|---|
setAppStoreId | アプリの App Store ID。アプリがインストールされていない場合に、ユーザーを App Store に転送するために使用します。 |
setFallbackUrl | アプリがインストールされていない場合に開くリンク。モバイルウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに App Store からアプリをインストールする以外の動作を指定できます。 |
setCustomScheme | アプリのカスタム URL スキーム(アプリのバンドル ID とは異なるものを定義している場合)。 |
setIpadFallbackUrl | アプリがインストールされていない場合に iPad で開くリンク。ウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに App Store からアプリをインストールする以外の動作を指定できます。 |
setIpadBundleId | iPad でリンクを開くために使う iOS アプリのバンドル ID。Firebase コンソールの [概要] ページで、アプリとプロジェクトが接続されている必要があります。 |
setMinimumVersion | リンクを開くことができるアプリの最小バージョンのバージョン番号。このフラグは、リンクを開くとアプリに渡されますが、処理方法はアプリ側で決める必要があります。 |
NavigationInfoParameters | |
---|---|
setForcedRedirectEnabled | 「1」に設定されている場合は、Dynamic Link が開かれたときにアプリのプレビュー ページをスキップし、代わりにアプリまたはストアにリダイレクトします。アプリのプレビュー ページ(デフォルトで有効)を使用すると、ユーザーがアプリで Dynamic Links を開いたときに、最適な宛先に確実に誘導できます。ただし、このページを使用せずに Dynamic Links を確実に開くことができるアプリでのみ Dynamic Link を開くようにする場合は、このパラメータを使用して無効にできます。このパラメータは、iOS の Dynamic Link の動作のみに影響します。 |
SocialMetaTagParameters | |
---|---|
setTitle | ソーシャル投稿で Dynamic Link を共有するときに使用するタイトル。 |
setDescription | ソーシャル投稿で Dynamic Link を共有するときに使用する説明。 |
setImageUrl | このリンクに関連する画像への URL。画像は 300 x 200 ピクセル以上、300 KB 未満である必要があります。 |
GoogleAnalyticsParameters | |
---|---|
setSource setMedium setCampaign setTerm setContent |
Google Play の解析パラメータ。これらのパラメータ(utm_source 、utm_medium 、utm_campaign 、utm_term 、utm_content )は、リンクのペイロードに追加されるだけでなく、Play ストアにも渡されます。 |
ItunesConnectAnalyticsParameters | |
---|---|
setProviderToken setAffiliateToken setCampaignToken |
iTunes Connect の解析パラメータ。これらのパラメータ(pt 、at 、ct )は App Store に渡されます。 |
長い Dynamic Link を短くする
長い Dynamic Link を短縮するには、他の Builder メソッドでパラメータを設定する代わりに、setLongLink
を使用して Dynamic Link の URL を指定します。
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync { longLink = Uri.parse( "https://example.page.link/?link=" + "https://www.example.com/&apn=com.example.android&ibn=com.example.ios", ) }.addOnSuccessListener { (shortLink, flowChartLink) -> // You'll need to import com.google.firebase.dynamiclinks.component1 and // com.google.firebase.dynamiclinks.component2 // Short link created processShortLink(shortLink, flowChartLink) }.addOnFailureListener { // Error // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios")) .buildShortDynamicLink() .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() { @Override public void onComplete(@NonNull Task<ShortDynamicLink> task) { if (task.isSuccessful()) { // Short link created Uri shortLink = task.getResult().getShortLink(); Uri flowchartLink = task.getResult().getPreviewLink(); } else { // Error // ... } } });