Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

iOSで動的リンクを作成する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Firebase Dynamic Links Builder API を使用して、短いダイナミック リンクまたは長いダイナミック リンクを作成できます。この API は、長いダイナミック リンクまたはダイナミック リンク パラメータを含むオブジェクトのいずれかを受け入れ、次の例のような URL を返します。

https://example.com/link/WXYZ
https://example.page.link/WXYZ

前提条件

開始する前に、必ずFirebase を iOS プロジェクトに追加してください

Swift Package Manager を使用して、Firebase の依存関係をインストールおよび管理します。

  1. Xcode で、アプリ プロジェクトを開いた状態で、 File > Add Packagesに移動します。
  2. プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Dynamic Links ライブラリを選択します。
  5. Dynamic Links で最適なエクスペリエンスを得るには、Firebase プロジェクトでGoogle アナリティクスを有効にし、Google アナリティクス用の Firebase SDK をアプリに追加することをお勧めします。 IDFA コレクションのないライブラリまたは IDFA コレクションのあるライブラリのいずれかを選択できます。
  6. 完了すると、Xcode はバックグラウンドで依存関係の解決とダウンロードを自動的に開始します。

ここで、いくつかの構成手順を実行します。

  1. Firebase コンソールで、 Dynamic Linksセクションを開きます。
  2. 利用規約にまだ同意しておらず、Dynamic Links の URI プレフィックスを設定していない場合は、プロンプトが表示されたら同意してください。

    ダイナミック リンクの URI プレフィックスが既にある場合は、それをメモしておいてください。プログラムでダイナミック リンクを作成するときに指定する必要があります。

  3. 推奨: ディープ リンクとフォールバック リンクで許可される URL パターンを指定します。そうすることで、ドメインから管理していないサイトにリダイレクトする Dynamic Links を権限のない第三者が作成するのを防ぐことができます。特定の URL パターンを許可するを参照してください。
  4. アプリの 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 を追加する

  1. UIApplicationDelegateFirebaseCoreモジュールをインポートし、アプリ デリゲートが使用する他のすべてのFirebase モジュールをインポートします。たとえば、Cloud Firestore と認証を使用するには:

    迅速

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. アプリ デリゲートのapplication(_:didFinishLaunchingWithOptions:)メソッドでFirebaseApp共有インスタンスを構成します。

    迅速

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Firebase コンソールを使用する

テスト目的で、またはマーケティング チームがソーシャル メディアの投稿などで使用できるリンクを簡単に作成するために、単一のダイナミック リンクを生成する場合、最も簡単な方法は、 Firebase コンソールにアクセスして作成することです。ステップバイステップのフォームに従って手動で。

iOS ビルダー API を使用する

iOS Builder API を使用して、パラメータからダイナミック リンクを作成したり、長いダイナミック リンクを短縮したりできます。

ダイナミック リンクを作成するには、新しいDynamicLinkComponentsオブジェクトを作成し、オブジェクトの対応するプロパティを設定してダイナミック リンク パラメータを指定します。次に、オブジェクトのurlプロパティから長いリンクを取得するか、short shorten()を呼び出して短いリンクを取得します。

次の最小限の例では、iOS の iOS アプリと Android のアプリcom.example.androidで開くhttps://www.example.com/my-pageへの長いダイナミック リンクを作成します。

迅速

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
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

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
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()は、リクエストが完了したときに呼び出される完了ハンドラーを受け入れます。例えば:

迅速

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
[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プロパティを設定することで実行できます。

迅速

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
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

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
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 リファレンスを参照してください。

次の例では、いくつかの共通パラメーター セットを使用してダイナミック リンクを作成します。

迅速

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
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

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
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_sourceutm_mediumutm_campaignutm_termutm_content ) は Play ストアに渡されるだけでなく、リンク ペイロードに追加されます。
DynamicLinkItunesConnectAnalyticsParameters
providerToken
アフィリエイトトークン
キャンペーントークン
iTunes Connect 分析パラメーター。これらのパラメーター ( ptatct ) は App Store に渡されます。

長いダイナミック リンクを短縮するには、長いダイナミック リンクをshortenURL(url:options:)に渡します。短い接尾辞を持つリンクを生成する場合は、 DynamicLinkComponentsOptionsオブジェクトと一緒に渡します。

迅速

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
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

注:この Firebase 製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
[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 スキームとして、アプリのバンドル ID を使用します。実装をシンプルに保つために、このデフォルト値をそのまま使用することをお勧めします。

ただし、他の目的ですでにカスタム URL スキームを使用している開発者は、ダイナミック リンクにも同じカスタム URL スキームを使用したいと考えるかもしれません。このような状況にある場合は、次の手順に従って、Firebase Dynamic Links に別の URL スキームを指定できます。

  1. アプリをセットアップするときは、 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;
    }
  2. ダイナミック リンクを作成するときは常に、アプリが使用するカスタム URL スキームを指定する必要があります。これは、Firebase コンソールを介して行うことができます。Builder API でcustomSchemeを設定するか、URL でiusパラメータを指定するか、 iosCustomSchemeパラメータを REST API に送信します。

次のステップ

ダイナミック リンクを作成したので、ダイナミック リンクを受信し、ユーザーがリンクを開いたときにアプリ内の適切な場所にユーザーを送信するようにアプリを設定する必要があります。

アプリでダイナミック リンクを受け取るには、 iOSAndroidC++ 、およびUnityのドキュメントを参照してください。