メインコンテンツまでスキップ

ディープリンクの実現方式

Status: Accepted

要約

過去に議論したディープリンクの実現方式では、ディープリンクを実現するためにFirebase Dynamic Linksを採用することにしました。

しかし、Firebase Dynamic Linksは廃止されることが公式のページでアナウンスされました。

そのため、このアプリではOSの機能であるUniversal LinksとAndroid App Linksを利用します。

コンテキスト

要約に記載のとおり、Firebase Dynamic Linksは廃止されるため、ディープリンクの実現方式を再度検討する必要があります。

ここでは、次の3つの方式から選択します。

用語は以下のとおりです。

用語説明
ディープリンクURLに紐付いたモバイルアプリを起動する機能
カスタムURLスキームmailto:のようにスキームに任意のプレフィックスを指定したURL
Universal LinksiOSがOSの機能としてサポートしているディープリンク
Android App LinksAndroidがOSの機能としてサポートしているディープリンク
Firebase Dynamic LinksApp Links、Universal Linksを拡張したFirebaseの機能

議論

カスタムURLスキームのセキュリティリスク

ディープリンクの3つの実現方式のうち、カスタムURLスキームには回避できないセキュリティのリスクがあります。

カスタムURLスキームは、複数のアプリが同じスキームを設定できるため、OSはURLリンクの対象とするアプリを一意に特定できません。その結果、正規アプリのスキームを偽装した不正アプリによってURLリンクを乗っ取られる可能性があります。

Appleのドキュメントにも、カスタムURLスキームではなくUniversal Linksを推奨する記載があります。

While custom URL schemes are an acceptable form of deep linking, universal links are strongly recommended. For more information on universal links, see Allowing apps and websites to link to your content.

そのため、カスタムURLスキームの採用は見送りました。

OSの機能とサードパーティのサービス

ここで述べるサードパーティのサービスとは、Firebase Dynamic Linksと同等の機能を提供するサービスを表します。

Dynamic Links のサポート終了に関するよくある質問では、Firebase Dynamic Linksの代替サービスとして、次のように記載されています。

移行シナリオ 1: Firebase Dynamic Links と同等の機能(ウェブとストアのルーティング、インストール後のディープリンクの遅延、標準ディープリンク、URL の短縮とホスティングおよびディープリンク分析など)がすべて必要な場合。

このシナリオでは、他のディープリンク プロバイダ / ベンダー(Bitly、Kochava、AppsFlyer、Adjust など、市場で利用可能な同様なプロバイダ)を使用することをおすすめします。(これらのプロバイダは審査が完了しているわけではありませんが、Firebase Dynamic Links と同様の機能を備えています)。この移行を可能な限り簡単に、かつシームレスに実現するために、Google では、ディープリンク メタデータをエクスポートする機能を提供します。

これらのサービスは、ディープリンク実現に関する工数の削減やマーケティング、ユーザ体験の向上など多くのメリットがあります。

その反面、今回のFirebase Dynamic Linksのように、サービスが終了してしまうリスクを常に抱えていかなければなりません。

また、チームメンバーに代替サービスの過去実績がないため、採用を決断するには情報が不足しています。これらの情報を収集するには多くの時間を費やす必要がありますが、以下を理由に調査は見送りました。

注記

AndroidでディープリンクのURLを読み取れないというissueは、React Nativeのv0.72.0以前の場合、以下のWorkaroundを適用する必要があります。

そのため、このアプリではOSの機能であるUniversal LinksとAndroid App Linksを採用することにします。

決定

ディープリンクの実現方式として、Universal LinksとAndroid App Linksを利用します。