Firebase Dynamic Links Builder API を使用して、短いダイナミック リンクまたは長いダイナミック リンクを作成できます。この API は、長いダイナミック リンクまたはダイナミック リンク パラメータを含むオブジェクトのいずれかを受け入れ、次の例のような URL を返します。
https://example.com/link/WXYZ https://example.page.link/WXYZ
前提条件
開始する前に、必ずFirebase を iOS プロジェクトに追加してください。
Firebase と Dynamic Links SDK を設定する
Swift Package Manager を使用して、Firebase の依存関係をインストールおよび管理します。
- Xcode で、アプリ プロジェクトを開いた状態で、 File > Add Packagesに移動します。
- プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。
- Dynamic Links ライブラリを選択します。
- Dynamic Links で最適なエクスペリエンスを得るには、Firebase プロジェクトでGoogle アナリティクスを有効にし、Google アナリティクス用の Firebase SDK をアプリに追加することをお勧めします。 IDFA コレクションのないライブラリまたは IDFA コレクションのあるライブラリのいずれかを選択できます。
- 完了すると、Xcode はバックグラウンドで依存関係の解決とダウンロードを自動的に開始します。
https://github.com/firebase/firebase-ios-sdk
ここで、いくつかの構成手順を実行します。
- Firebase コンソールで、 Dynamic Linksセクションを開きます。
利用規約にまだ同意しておらず、Dynamic Links の URI プレフィックスを設定していない場合は、プロンプトが表示されたら同意してください。
ダイナミック リンクの URI プレフィックスが既にある場合は、それをメモしておいてください。プログラムでダイナミック リンクを作成するときに指定する必要があります。
- 推奨: ディープ リンクとフォールバック リンクで許可される URL パターンを指定します。そうすることで、ドメインから管理していないサイトにリダイレクトする Dynamic Links を権限のない第三者が作成するのを防ぐことができます。特定の URL パターンを許可するを参照してください。
アプリの App Store ID とアプリ ID プレフィックスがアプリの設定で指定されていることを確認してください。アプリの設定を表示および編集するには、Firebase プロジェクトの[設定] ページに移動し、iOS アプリを選択します。
Dynamic Links ドメインでホストされている
apple-app-site-association
ファイルを開いて、iOS アプリで Dynamic Links を使用するように Firebase プロジェクトが適切に構成されていることを確認します。 Firebase は、ドメインのルートと.well-known
サブディレクトリからapple-app-site-association
ファイルを提供します。例えば:https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-association
アプリが接続されている場合、
apple-app-site-association
ファイルには、アプリのアプリ ID プレフィックスとバンドル ID への参照が含まれています。例えば:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
details
プロパティが空の場合は、App ID プレフィックスを指定したことを再確認してください。アプリ ID プレフィックスは、チーム ID と同じではない場合があることに注意してください。
アプリに Firebase を追加する
UIApplicationDelegate
にFirebaseCore
モジュールをインポートし、アプリ デリゲートが使用する他のすべてのFirebase モジュールをインポートします。たとえば、Cloud Firestore と認証を使用するには:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
迅速
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()
迅速
// 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 コンソールを使用する
テスト目的で、またはマーケティング チームがソーシャル メディアの投稿などで使用できるリンクを簡単に作成するために、単一のダイナミック リンクを生成する場合、最も簡単な方法は、 Firebase コンソールにアクセスして作成することです。ステップバイステップのフォームに従って手動で。
iOS ビルダー API を使用する
iOS Builder API を使用して、パラメータからダイナミック リンクを作成したり、長いダイナミック リンクを短縮したりできます。
パラメータから動的リンクを作成する
ダイナミック リンクを作成するには、新しいDynamicLinkComponents
オブジェクトを作成し、オブジェクトの対応するプロパティを設定してダイナミック リンク パラメータを指定します。次に、オブジェクトのurl
プロパティから長いリンクを取得するか、short shorten()
を呼び出して短いリンクを取得します。
次の最小限の例では、iOS の iOS アプリと Android のアプリcom.example.android
で開くhttps://www.example.com/my-page
への長いダイナミック リンクを作成します。
迅速
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);
短いダイナミック リンクを作成するには、同じ方法でDynamicLinkComponents
を作成してから、 short shorten()
を呼び出します。
短いリンクの構築にはネットワーク呼び出しが必要なため、リンクを直接返す代わりに、short shorten()
は、リクエストが完了したときに呼び出される完了ハンドラーを受け入れます。例えば:
迅速
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); }];
デフォルトでは、短いダイナミック リンクは 17 文字のリンク サフィックスで生成されるため、誰かが有効なダイナミック リンクを推測できる可能性はほとんどありません。あなたのユースケースで、誰かが短いリンクをうまく推測しても害がない場合は、一意であるために必要な長さだけのサフィックスを生成することを好むかもしれません。これは、 dynamicLinkComponentsOptions
プロパティを設定することで実行できます。
迅速
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 Builder API を使用して、サポートされている任意のパラメーターを使用して Dynamic Links を作成できます。詳細については、 API リファレンスを参照してください。
次の例では、いくつかの共通パラメーター セットを使用してダイナミック リンクを作成します。
迅速
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);
次のオブジェクトとプロパティを使用してダイナミック リンク パラメータを設定できます。
DynamicLinkComponents | |
---|---|
リンク | アプリが開くリンク。アプリが処理できる URL (通常はアプリのコンテンツまたはペイロード) を指定します。これにより、アプリ固有のロジック (ユーザーへのクーポンの提供やウェルカム画面の表示など) が開始されます。このリンクは適切な形式の URL である必要があり、適切に URL エンコードされ、HTTP または HTTPS を使用する必要があり、別のダイナミック リンクであってはなりません。 |
ドメインURIプレフィックス | ダイナミック リンクの URL プレフィックス。Firebase コンソールで確認できます。 Dynamic Link ドメインは次の例のようになります: https://example.com/link https://example.page.link |
DynamicLinkAndroidParameters | |
---|---|
フォールバック URL | アプリがインストールされていないときに開くリンク。アプリがインストールされていないときに Play ストアからアプリをインストールする以外のことを行うには、これを指定します。たとえば、コンテンツのモバイル Web バージョンを開くか、アプリのプロモーション ページを表示します。 |
最小バージョン | リンクを開くことができるアプリの最小バージョンのversionCode 。インストールされているアプリが古いバージョンの場合、ユーザーは Play ストアに移動してアプリをアップグレードします。 |
DynamicLinkIOSParameters | |
---|---|
appStoreID | アプリがインストールされていないときにユーザーを App Store に送るために使用されるアプリの App Store ID |
フォールバック URL | アプリがインストールされていないときに開くリンク。アプリがインストールされていないときに App Store からアプリをインストールする以外のことを行うには、これを指定します。たとえば、コンテンツのモバイル Web バージョンを開くか、アプリのプロモーション ページを表示します。 |
カスタムスキーム | アプリのカスタム URL スキーム (アプリのバンドル ID 以外に定義されている場合) |
iPad フォールバック URL | アプリがインストールされていない場合に iPad で開くためのリンク。アプリがインストールされていないときに App Store からアプリをインストールする以外のことを行うには、これを指定します。たとえば、コンテンツの Web バージョンを開くか、アプリのプロモーション ページを表示します。 |
iPadバンドルID | リンクを開くために iPad で使用する iOS アプリのバンドル ID。アプリは、Firebase コンソールの [概要] ページからプロジェクトに接続する必要があります。 |
最小アプリバージョン | リンクを開くことができるアプリの最小バージョンのバージョン番号。このフラグはアプリが開かれたときにアプリに渡され、アプリはそれをどう処理するかを決定する必要があります。 |
DynamicLinkNavigationInfoParameters | |
---|---|
forcedRedirectEnabled | 「1」に設定すると、ダイナミック リンクが開いたときにアプリのプレビュー ページをスキップし、代わりにアプリまたはストアにリダイレクトします。アプリのプレビュー ページ (デフォルトで有効) は、ユーザーがアプリで Dynamic Links を開いたときに、最も適切なリンク先に確実に移動できるようにします。ただし、このページがなくてもダイナミック リンクを確実に開くことができるアプリでのみダイナミック リンクが開かれることが予想される場合は、このパラメーターを使用して無効にすることができます。このパラメーターは、iOS でのみダイナミック リンクの動作に影響します。 |
DynamicLinkSocialMetaTagParameters | |
---|---|
題名 | ダイナミック リンクがソーシャル投稿で共有されるときに使用するタイトル。 |
説明テキスト | ダイナミック リンクがソーシャル投稿で共有されるときに使用する説明。 |
画像URL | このリンクに関連する画像への URL。画像は 300x200 ピクセル以上、300 KB 未満である必要があります。 |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
ソース 中くらい 運動 学期 コンテンツ | Google Play 分析パラメーター。これらのパラメータ ( utm_source 、 utm_medium 、 utm_campaign 、 utm_term 、 utm_content ) は Play ストアに渡されるだけでなく、リンク ペイロードに追加されます。 |
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
providerToken アフィリエイトトークン キャンペーントークン | iTunes Connect 分析パラメーター。これらのパラメーター ( pt 、 at 、 ct ) は App Store に渡されます。 |
長いダイナミック リンクを短くする
長いダイナミック リンクを短縮するには、長いダイナミック リンクをshortenURL(url:options:)
に渡します。短い接尾辞を持つリンクを生成する場合は、 DynamicLinkComponentsOptions
オブジェクトと一緒に渡します。
迅速
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 スキームを使用している開発者は、ダイナミック リンクにも同じカスタム URL スキームを使用したいと考えるかもしれません。このような状況にある場合は、次の手順に従って、Firebase Dynamic Links に別の URL スキームを指定できます。
- アプリをセットアップするときは、
FirebaseApp
共有インスタンスを構成する前に、アプリケーションで使用されるデフォルトの URL スキームを指定してください。迅速
注:この 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; }
- ダイナミック リンクを作成するときは常に、アプリが使用するカスタム URL スキームを指定する必要があります。これは、Firebase コンソールを介して行うことができます。Builder API で
customScheme
を設定するか、URL でius
パラメータを指定するか、iosCustomScheme
パラメータを REST API に送信します。
次のステップ
ダイナミック リンクを作成したので、ダイナミック リンクを受信し、ユーザーがリンクを開いたときにアプリ内の適切な場所にユーザーを送信するようにアプリを設定する必要があります。
アプリでダイナミック リンクを受け取るには、 iOS 、 Android 、 C++ 、およびUnityのドキュメントを参照してください。