Firebase Dynamic Links Builder API を使用して、短い、もしくは長い Dynamic Links を作成できます。この API は、長い Dynamic Link または Dynamic Link パラメータを含むオブジェクトのいずれかを受け入れ、次の例のような URL を返します。
https://example.com/link/WXYZ https://example.page.link/WXYZ
前提条件
作業を開始する前に、iOS プロジェクトに Firebase を追加していることを確認してください。
Firebase と Dynamic Links SDK を設定する
Swift Package Manager を使用して Firebase の依存関係のインストールと管理を行います。
- Xcode でアプリのプロジェクトを開いたまま、[File] > [Add Packages] の順に移動します。
- プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。
- Dynamic Links ライブラリを選択します。
- ターゲットのビルド設定の [Other Linker Flags] セクションに
-ObjC
フラグを追加します。 - Dynamic Links でのエクスペリエンスを最適化するために、Firebase プロジェクトで Google Analytics を有効にして、Google アナリティクス用の Firebase SDK をアプリに追加することをおすすめします。ライブラリで IDFA の収集を行う / 行わないを選択できます。
- 上記の作業が完了すると、Xcode は依存関係の解決とバックグラウンドでのダウンロードを自動的に開始します。
https://github.com/firebase/firebase-ios-sdk.git
次に、構成ステップを行います。
- Firebase コンソールで [Dynamic Links] セクションを開きます。
-
利用規約に同意せずに Dynamic Links の URI 接頭辞を設定している場合、プロンプトに従って利用規約に同意します。
Dynamic Links URI 接頭辞がすでに存在する場合は、それをメモしておきます。Dynamic Links をプログラムで作成する場合は、これを指定する必要があります。
- 推奨: ディープリンクやフォールバック リンクで許可する URL パターンを指定します。これにより、不正なユーザーがお客様のドメインからお客様の管理外のサイトへリダイレクトする Dynamic Links を作成することを防ぎます。 特定の URL パターンを許可するをご覧ください。
-
アプリの App Store ID と App ID Prefix がアプリの設定で指定されていることを確認します。アプリの設定を表示して編集するには、Firebase プロジェクトの [設定] ページに移動して iOS アプリを選択します。
Dynamic Links ドメインにホストされている
apple-app-site-association
ファイルを開いて、iOS アプリで Dynamic Links を使用するために Firebase プロジェクトが正しく構成されていることを確認します。Firebase は、apple-app-site-association
ファイルをドメインのルートと.well-known
サブディレクトリから提供します。次に例を示します。https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-association
アプリが接続されている場合、
apple-app-site-association
ファイルにはアプリの App ID Prefix とバンドル ID への参照が含まれます。次に例を示します。{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
details
プロパティが空の場合、App ID Prefix が指定済みであることを再確認してください。App ID Prefix はチーム ID と同じでない場合があるので注意してください。
アプリに Firebase を追加する
UIApplicationDelegate
にFirebaseCore
モジュールと、アプリのデリゲートが使用する他の Firebase モジュールをインポートします。たとえば、Cloud Firestore、Authentication を使用するには、次のように指定します。SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- アプリ デリゲートの
application(_:didFinishLaunchingWithOptions:)
メソッドで、FirebaseApp
共有インスタンスを構成します。SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- SwiftUI を使用している場合は、アプリケーション デリゲートを作成し、
UIApplicationDelegateAdaptor
またはNSApplicationDelegateAdaptor
を介してApp
構造体に接続する必要があります。また、アプリ デリゲートのメソッドの実装入れ替えを無効にする必要があります。詳細については、SwiftUI の手順をご覧ください。SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Firebase コンソール の使用
テスト用や、マーケティング チームがソーシャル メディア投稿用にリンクを簡単に作成できるよう、単一の Dynamic Link を生成したい場合、Firebase コンソールを開き、各手順が示されたフォームに沿って手動で作成するのが最も簡単です。
iOS Builder API を使用する
iOS Builder API を使用して、パラメータから Dynamic Links を作成したり、長い Dynamic Link を短縮したりできます。
パラメータから Dynamic Link を作成する
Dynamic Link を作成するには、新しい DynamicLinkComponents
オブジェクトを作成し、オブジェクトに対応するプロパティを設定して Dynamic Link パラメータを指定します。続いて、オブジェクトの url
プロパティから長いリンクを取得するか、shorten()
を呼び出して短いリンクを取得します。
次のシンプルな例では、iOS 上の iOS アプリと Android 上のアプリ com.example.android
で開く、https://www.example.com/my-page
への長い Dynamic Link を作成します。
Swift
guard let link = URL(string: "https://www.example.com/my-page") else { return } let dynamicLinksDomainURIPrefix = "https://example.com/link" let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix) linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios") linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android") guard let longDynamicLink = linkBuilder.url else { return } print("The long URL is: \(longDynamicLink)")
Objective-C
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"]; NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link"; FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc] initWithLink:link domainURIPrefix:dynamicLinksDomainURIPrefix]; linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc] initWithBundleID:@"com.example.ios"]; linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc] initWithPackageName:@"com.example.android"]; NSLog(@"The long URL is: %@", linkBuilder.url);
短い Dynamic Link を作成するには、同じ方法で DynamicLinkComponents
を作成してから shorten()
を呼び出します。
短いリンクの作成にはネットワーク呼び出しが必要となるため、shorten()
はリンクを直接返すのではなく、完了ハンドラを受け取ります。完了ハンドラはリクエストの完了時に呼び出されます。次に例を示します。
Swift
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
デフォルトでは、短い Dynamic Links は 17 文字のリンク サフィックス付きで生成されるため、他の誰かが有効な Dynamic Link を推測することはほぼ不可能です。アプリの使用状況を考慮した上で、他の誰かが短いリンクを知ったとしても無害であると考えられる場合、生成されるサフィックスは、一意にするのに必要なだけの長さがあれば十分であると判断できます。そのようなサフィックスを生成するには、dynamicLinkComponentsOptions
プロパティを設定します。
Swift
linkBuilder.options = DynamicLinkComponentsOptions() linkBuilder.options.pathLength = .short linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init]; linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort; [linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
Dynamic Link パラメータ
Dynamic Link Builder API を使用して、サポートされている任意のパラメータが設定された Dynamic Links を作成できます。詳細については、API リファレンスを参照してください。
次の例では、いくつかの一般的なパラメータが設定された Dynamic Link を作成します。
Swift
guard let link = URL(string: "https://www.example.com/my-page") else { return } let dynamicLinksDomainURIPrefix = "https://example.com/link" let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix) linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios") linkBuilder.iOSParameters.appStoreID = "123456789" linkBuilder.iOSParameters.minimumAppVersion = "1.2.3" linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android") linkBuilder.androidParameters.minimumVersion = 123 linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut", medium: "social", campaign: "example-promo") linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters() linkBuilder.iTunesConnectParameters.providerToken = "123456" linkBuilder.iTunesConnectParameters.campaignToken = "example-promo" linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters() linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link" linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!" linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg" guard let longDynamicLink = linkBuilder.url else { return } print("The long URL is: \(longDynamicLink)")
Objective-C
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"]; NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link"; FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc] initWithLink:link domainURIPrefix:dynamicLinksDomainURIPrefix]; linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc] initWithBundleID:@"com.example.ios"]; linkBuilder.iOSParameters.appStoreID = @"123456789"; linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3"; linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc] initWithPackageName:@"com.example.android"]; linkBuilder.androidParameters.minimumVersion = 123; linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc] initWithSource:@"orkut" medium:@"social" campaign:@"example-promo"]; linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init]; linkBuilder.iTunesConnectParameters.providerToken = @"123456"; linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo"; linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init]; linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link"; linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!"; linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg"; NSLog(@"The long URL is: %@", linkBuilder.url);
Dynamic Link のパラメータは、次のオブジェクトとプロパティで設定できます。
DynamicLinkComponents | |
---|---|
リンク |
アプリで開くリンク。アプリで処理可能な URL を指定します。通常、この URL はアプリ固有のロジック(ユーザーへのクーポン付与や特定の開始画面の表示など)を起動するアプリのコンテンツやペイロードへのリンクです。このリンクは適切な形式の URL で、正しく URL エンコードされている必要があります。HTTP または HTTPS のいずれかを使用してください。他のダイナミック リンクは使用できません。 |
domainURIPrefix | Dynamic Link の URL 接頭辞。Firebase コンソールで確認できます。
Dynamic Link ドメインは次の例のようになります。
https://example.com/link https://example.page.link |
DynamicLinkAndroidParameters | |
---|---|
fallbackURL | アプリがインストールされていない場合に開くリンク。モバイルウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに Play ストアからアプリをインストールする以外の動作をさせる場合に指定します。 |
minimumVersion | リンクを開くことができるアプリの最小バージョンの versionCode 。インストールされているアプリのバージョンがそれよりも古い場合、ユーザーは Play ストアにリダイレクトされ、アプリのアップグレードを促されます。 |
DynamicLinkIOSParameters | |
---|---|
appStoreID | アプリの App Store ID。アプリがインストールされていない場合にユーザーを App Store に転送するために使用します。 |
fallbackURL | アプリがインストールされていない場合に開くリンク。モバイルウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに App Store からアプリをインストールする以外の動作をさせる場合に指定します。 |
customScheme | アプリのカスタム URL スキーム(アプリのバンドル ID とは異なるものを定義している場合)。 |
iPadFallbackURL | アプリがインストールされていない場合に iPad で開くリンク。ウェブ バージョンのコンテンツを開いたり、アプリの宣伝ページを開いたりするなど、アプリがインストールされていないときに App Store からアプリをインストールする以外の動作をさせる場合に指定します。 |
iPadBundleID | iPad でリンクを開くために使う iOS アプリのバンドル ID。Firebase コンソールの [概要] ページで、アプリとプロジェクトが接続されている必要があります。 |
minimumAppVersion | リンクを開くことができるアプリの最小バージョンのバージョン番号。このフラグは、リンクを開くとアプリに渡されますが、処理方法はアプリ側で決める必要があります。 |
DynamicLinkNavigationInfoParameters | |
---|---|
forcedRedirectEnabled | 「1」に設定されている場合は、Dynamic Link が開かれたときにアプリのプレビュー ページをスキップし、代わりにアプリまたはストアにリダイレクトします。アプリのプレビュー ページ(デフォルトで有効)を使用すると、ユーザーがアプリで Dynamic Links を開いたときに、最適な宛先に確実に誘導できます。ただし、このページを使用せずに Dynamic Links を確実に開くことができるアプリでのみ Dynamic Link を開くようにする場合は、このパラメータを使用して無効にできます。このパラメータは、iOS の Dynamic Link の動作のみに影響します。 |
DynamicLinkSocialMetaTagParameters | |
---|---|
title | ソーシャル投稿で Dynamic Link を共有するときに使用するタイトル。 |
descriptionText | ソーシャル投稿で Dynamic Link を共有するときに使用する説明。 |
imageURL | このリンクに関連する画像への URL。画像は 300 x 200 ピクセル以上、300 KB 未満である必要があります。 |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
source medium campaign term content |
Google Play の解析パラメータ。これらのパラメータ(utm_source 、utm_medium 、utm_campaign 、utm_term 、utm_content )は、リンクのペイロードに追加されるだけでなく、Play ストアにも渡されます。 |
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
providerToken affiliateToken campaignToken |
iTunes Connect の解析パラメータ。これらのパラメータ(pt 、at 、ct )は App Store に渡されます。 |
長い Dynamic Link を短くする
長い Dynamic Link を短縮する場合に、短いサフィックスが付加されたリンクを生成するのであれば、長い Dynamic Link を DynamicLinkComponentsOptions
オブジェクトとともに shortenURL(url:options:)
に渡します。
Swift
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
[FIRDynamicLinkComponents shortenURL:longLinkUrl options:nil completion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
Dynamic Links のカスタム URL スキームの指定
Dynamic Links はデフォルトで、アプリを開くために必要な URL スキームとしてアプリのバンドル ID を使用します。実装をシンプルにしておくために、このデフォルト値を変更しないことをおすすめします。
ただし、他の目的でカスタム URL スキームをすでに使用している場合は、Dynamic Links にも同じカスタム URL スキームを使用するのが望ましいこともあります。このような場合は、次の手順で Firebase Dynamic Links に別の URL スキームを指定できます。
- アプリを設定するときは、
FirebaseApp
共有インスタンスを構成する前に、アプリで使用するデフォルトの URL スキームを指定します。Swift
注: この Firebase プロダクトは、macOS、Mac Catalyst、tvOS、watchOS の各ターゲットでは使用できません。func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication .LaunchOptionsKey: Any]?) -> Bool { // Set deepLinkURLScheme to the custom URL scheme you defined in your // Xcode project. FirebaseOptions.defaultOptions()?.deepLinkURLScheme = customURLScheme FirebaseApp.configure() return true }
Objective-C
注: この Firebase プロダクトは、macOS、Mac Catalyst、tvOS、watchOS の各ターゲットでは使用できません。- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Set deepLinkURLScheme to the custom URL scheme you defined in your // Xcode project. [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME; [FIRApp configure]; return YES; }
- Dynamic Link を作成するたびに、アプリで使用されるカスタム URL スキームを指定する必要があります。これは、Firebase コンソールを使用して、Builder API で
customScheme
を設定する、URL にius
パラメータを指定する、REST API にiosCustomScheme
パラメータを送信するといった方法で行えます。
次のステップ
Dynamic Links を作成したら、アプリが Dynamic Links を受け取るよう設定し、ユーザーがこれを開いたときにアプリ内の適切な場所に転送されるようにする必要があります。
アプリで Dynamic Links を受信する方法については、iOS、Android、C++、Unity のドキュメントをご覧ください。