Open3
【Flutter】Deep Links ★
DeepLinksとは
ディープリンクとはDynamic LinksやApp Links, Universal Linksなどの総称。URLリンクから直接モバイルアプリケーションの起動やアプリ内コンテンツを起動する事ができる技術。
最も簡易的なCustom URL scheme、より複雑な機能を有するプラットフォームに依存したディープリンク技術のUniversal Links(iOS), Android App Links(Android)、Firebaseが提供し2025年8月末にクローズするDynamic Linksの4つが主なソリューションとなっている。(この他にも複数のサードパーティサービスは存在)
これら技術の主な違いは以下に集約される
- セキュリティ面の考慮
- アプリがインストールされていない場合の挙動
URL
URL(Uniform Resource Locator) は主に以下の5つのパートで成り立っている
- スキーム
- ドメイン
- パス
- パラメータ
- アンカー
Custom URL scheme
Universal Links & Android App Links
Dynamic Links
用語
Deep Links
: ウェブサイトやアプリケーション内の特定のページやコンテンツへ直接リンクする技術の総称。Deep Links技術のソリューションとしてCustom Url Scheme, Android Deep Links, App Links, Universal linksが提供されている。
scheme (custom scheme)
:
Android Deep Links
:
Android App Links
:
Custom Url Scheme
:
Universal Links
:
Deferred Deep Link
:
参考
Dynamic Links
GoogleのFirebaseが運用するDeep Linkサービス。
仕組み
導入手順
Flutter
- FlutterプロジェクトとFirebaseプロジェクトを連携させる
- AndroidManifest.xmlに以下を追記
<manifest> <application> <activity> <!-- ここから --> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="hogehoge.page.link" android:scheme="https"/> </intent-filter> <!-- ここまで追記 --> </activity> </application> </manifest>
-
Runner.entitlements
に以下を追記<plist> <dict> <!-- ここから --> <key>com.apple.developer.associated-domains</key> <array> <string>applinks:hogehoge.page.link</string> </array> <!-- ここまで追記 --> </dict> </plist>
- DynamicLinksを発行する
ホワイトリストに追加する
Deep Linkをテストする
Simulator/emulatorでDeep Linkの挙動をテストしたい場合は以下をターミナルから実行する
Android
adb shell am start -W -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "scheme://myApp/page1/1"
iOS
xcrun simctl openurl booted customscheme://ourApp/page/2