Flutter アプリでダイナミック リンクを作成する

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

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

Android アプリでダイナミック リンクを作成する場合は、Firebase SDK をインクルードしておく必要があります。アプリがダイナミック リンクを受信するように設定されている場合、この手順はすでに完了しているため、このセクションをスキップして構いません。

  1. Flutter 用の Firebase SDK をインストールして初期化します(まだ行っていない場合)。

  2. Flutter プロジェクトのルート ディレクトリから、次のコマンドを実行して、Dynamic Links プラグインをインストールします。

    flutter pub add firebase_dynamic_links
    
  3. Android アプリをビルドする場合は、Firebase コンソールの [プロジェクトの設定] ページを開き、SHA-1 署名鍵を指定していることを確認します。アプリリンクを使用する場合は SHA-256 の鍵も指定します。

  4. Firebase コンソールで [Dynamic Links] セクションを開きます。

    1. Dynamic Links のドメインをまだ設定していない場合は、[始める] ボタンをクリックして、画面の指示に沿って操作します。

      Dynamic Links ドメインを作成している場合は、それをメモしておきます。ダイナミック リンクをプログラムで作成する場合は、Dynamic Links ドメインを指定する必要があります。

    2. 推奨: [その他](⋮)メニューで、ディープリンクとフォールバック リンクで使用できる URL パターンを指定します。これにより、お客様のドメインからお客様の管理外のサイトへリダイレクトする Dynamic Links が不正ユーザーによって作成されるのを防止できます。特定の URL パターンを許可するをご覧ください。

ダイナミック リンクを作成するには、新しい DynamicLinkParameters オブジェクトを作成し、buildLink() または buildShortLink() に渡します。

次のシンプルな例では、com.example.app.android(Android の場合)とアプリ com.example.app.ios(iOS の場合)で開く https://www.example.com/ への長いダイナミック リンクを作成します。

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);

短いダイナミック リンクを作成するには、DynamicLinkParameters オブジェクトを buildShortLink() に渡します。短いリンクの作成にはネットワーク呼び出しが必要です。次に例を示します。

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

デフォルトでは、短いダイナミック リンクは、数文字のサフィックス付きで生成されます。これにより、リンクがコンパクトになりますが、有効な短縮リンクを推測される可能性もあります。多くの場合、リンクをクリックすると公開情報に移動するため、他者に推測されても問題はありません。

ただし、短いリンクからユーザー固有の情報に移動する場合は、17 文字のサフィックス付きで長いリンクを作成する必要があります。これにより、有効なダイナミック リンクが推測される可能性が非常に低くなります。これを行うには、ShortDynamicLinkType.unguessablebuildShortLink() メソッドに渡します。

final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
    dynamicLinkParams,
    shortLinkType: ShortDynamicLinkType.unguessable,
);

Dynamic Link Builder API を使用して、サポートされている任意のパラメータが設定されたダイナミック リンクを作成できます。API リファレンスをご覧ください。

次の例では、いくつかの一般的なパラメータが設定されたダイナミック リンクを作成します。

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(
    packageName: "com.example.app.android",
    minimumVersion: 30,
  ),
  iosParameters: const IOSParameters(
    bundleId: "com.example.app.ios",
    appStoreId: "123456789",
    minimumVersion: "1.0.1",
  ),
  googleAnalyticsParameters: const GoogleAnalyticsParameters(
    source: "twitter",
    medium: "social",
    campaign: "example-promo",
  ),
  socialMetaTagParameters: SocialMetaTagParameters(
    title: "Example of a Dynamic Link",
    imageUrl: Uri.parse("https://example.com/image.png"),
  ),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

ダイナミック リンクのパラメータは、次のメソッドで設定できます。

DynamicLink のパラメータ
setLink アプリで開くリンク。アプリで処理可能な URL を指定します。通常、この URL はアプリ固有のロジック(ユーザーへのクーポン付与や特定の開始画面の表示など)を起動するアプリのコンテンツやペイロードへのリンクです。このリンクは適切な形式の URL で、正しく URL エンコードされている必要があります。HTTP または HTTPS のいずれかを使用してください。他のダイナミック リンクは使用できません。
setDomainUriPrefix ダイナミック リンクの URL 接頭辞。Firebase コンソールで確認できます。ダイナミック リンクのドメインは次の例のようになります。
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」に設定されている場合は、ダイナミック リンクが開いているときにアプリのプレビュー ページをスキップし、代わりにアプリまたはストアにリダイレクトします。アプリのプレビュー ページ(デフォルトで有効になっています)は、ユーザーがアプリでダイナミック リンクを開いたときにユーザーを最も適切な宛先に確実に転送できます。ただし、このページなしでダイナミック リンクを確実に開くことができるアプリのみでダイナミック リンクが開かれるようにする場合は、このパラメータを使用してアプリのプレビュー ページを無効にすることができます。このパラメータは、iOS のダイナミック リンクの動作のみに影響します。
SocialMetaTagParameters
setTitle ソーシャル投稿でダイナミック リンクを共有するときに使用するタイトル。
setDescription ソーシャル投稿でダイナミック リンクを共有するときに使用する説明。
setImageUrl このリンクに関連する画像への URL。画像は 300x200 ピクセル以上、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 に渡されます。