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

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

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

Androidアプリでダイナミックリンクを作成する前に、FirebaseSDKを含める必要があります。アプリが動的リンクを受信するように設定されている場合は、これらの手順をすでに完了しているため、このセクションをスキップできます。

  1. まだ行っていない場合は、Flutter用のFirebaseSDKをインストールして初期化します

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

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

  4. Firebaseコンソールで、[ダイナミックリンク]セクションを開きます。

    1. ダイナミックリンクのドメインをまだ設定していない場合は、[開始]ボタンをクリックして、プロンプトに従います。

      すでにダイナミックリンクドメインをお持ちの場合は、それに注意してください。プログラムでダイナミックリンクを作成する場合は、ダイナミックリンクドメインを提供する必要があります。

    2. 推奨:[その他](⋮)メニューから、ディープリンクとフォールバックリンクで許可されるURLパターンを指定します。そうすることで、権限のない第三者がドメインから管理していないサイトにリダイレクトする動的リンクを作成するのを防ぐことができます。

      特定のURLパターンを許可するを参照してください。

動的リンクを作成するには、新しいDynamicLinkParametersオブジェクトを作成し、それをbuildLink()またはbuildShortLink()に渡します。

次の最小限の例では、 https://www.example.com/ //www.example.com/への長い動的リンクを作成します。このリンクはAndroidの場合はcom.example.app.androidで、iOSの場合はアプリcom.example.app.iosで開きます。

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オブジェクトを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エンコードされ、HTTPまたはHTTPSのいずれかを使用する必要があり、別の動的リンクにすることはできません。
setDomainUriPrefixダイナミックリンクのURLプレフィックス。Firebaseコンソールにあります。ダイナミックリンクドメインは、次の例のようになります
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrlアプリがインストールされていないときに開くリンク。これを指定すると、アプリがインストールされていないときにPlayストアからアプリをインストールする以外のことを行うことができます。たとえば、コンテンツのモバイルWebバージョンを開いたり、アプリのプロモーションページを表示したりできます。
setMinimumVersionリンクを開くことができるアプリの最小バージョンのversionCode。インストールされているアプリが古いバージョンの場合、ユーザーはPlayストアに移動してアプリをアップグレードします。
IosParameters
setAppStoreIdアプリがインストールされていないときにユーザーをAppStoreに送信するために使用されるアプリのAppStoreID
setFallbackUrlアプリがインストールされていないときに開くリンク。これを指定すると、アプリがインストールされていないときにApp Storeからアプリをインストールする以外のことを行うことができます。たとえば、コンテンツのモバイルWebバージョンを開いたり、アプリのプロモーションページを表示したりできます。
setCustomSchemeアプリのバンドルID以外のものとして定義されている場合は、アプリのカスタムURLスキーム
setIpadFallbackUrlアプリがインストールされていないときにiPadで開くためのリンク。これを指定すると、アプリがインストールされていないときにApp Storeからアプリをインストールする以外のことを行うことができます。たとえば、コンテンツのWebバージョンを開いたり、アプリのプロモーションページを表示したりできます。
setIpadBundleIdリンクを開くためにiPadで使用するiOSアプリのバンドルID。アプリは、Firebaseコンソールの[概要]ページからプロジェクトに接続する必要があります。
setMinimumVersionリンクを開くことができるアプリの最小バージョンのバージョン番号。このフラグはアプリが開かれたときに渡され、アプリはそれをどう処理するかを決定する必要があります。
NavigationInfoParameters
setForcedRedirectEnabled 「1」に設定すると、ダイナミックリンクを開いたときにアプリのプレビューページをスキップし、代わりにアプリまたはストアにリダイレクトします。アプリのプレビューページ(デフォルトで有効)を使用すると、ユーザーがアプリで動的リンクを開いたときに、ユーザーをより適切な宛先に確実に送ることができます。ただし、このページがなくても動的リンクを確実に開くことができるアプリでのみ動的リンクを開くことが期待される場合は、このパラメーターを使用して無効にすることができます。このパラメータは、iOSでのみダイナミックリンクの動作に影響します。
SocialMetaTagParameters
setTitleダイナミックリンクがソーシャル投稿で共有されるときに使用するタイトル。
setDescriptionダイナミックリンクがソーシャル投稿で共有されるときに使用する説明。
setImageUrlこのリンクに関連する画像へのURL。画像は300x200ピクセル以上、300KB未満である必要があります。
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
GooglePlayの分析パラメータ。これらのパラメータ( `utm_source`、` utm_medium`、 `utm_campaign`、` utm_term`、 `utm_content`)は、Playストアに渡されるだけでなく、リンクペイロードに追加されます。
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunesConnect分析パラメーター。これらのパラメーター( `pt`、` at`、 `ct`)はAppStoreに渡されます。