皆さんこんにちは、r.matsumotoです。
今回はFlutterでFirebaseのDynamic Linksを用いた実装を行ったのでそちらについて解説していきたいと思います。
Dynamic Linksとは?
ios、androidアプリの「ディープリンク」を発行出来るFirebaseのプロダクトの一つです。
またios、androidで同じURLを使い回すことが可能でアクセスされた端末の状態によって以下のような分岐が可能です。
・アプリインストール済みの端末の場合アプリを起動
・アプリ未インストールの場合ストアへ誘導
その他にもDynamic Linksで使用するドメイン名も特にこだわりが無い場合Firebase側で用意してくれるのも魅力の一つだと思います。
Android、iOSそれぞれのDynamic Linksの設定
ここからはFirebaseの導入、Firebase側のDynamic Linksの設定が完了している前提でお話を進めさせていただきます。
android側の設定は「android/app/src/main/AndroidManifest.xml」を開き以下を追記します。
「hogehoge.page.link」の箇所は自身の設定したいDynamic Linksを記入してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<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> |
ios側の設定は「ios/Runner/Runner.entitlements」を開き以下を追記します。
こちらの追記はXcodeから設定しても大丈夫です。
1 2 3 4 5 6 7 8 9 10 |
<plist> <dict> <!-- ここから --> <key>com.apple.developer.associated-domains</key> <array> <string>applinks:hogehoge.page.link</string> </array> <!-- ここまで追記 --> </dict> </plist> |
Flutter側の実装
Dynamic LinksのURLパラメーターの値を受け取る為に「url_launcher」というライブラリを追加します。
pubspec.yamlを開き以下を追記します。
1 2 3 |
dependencies: # 以下を追記 url_launcher: |
URLパラメーターの値を受け取りたい画面のページに以下のような実装をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@override void initState() { super.initState(); uriLinkStream.listen((uri) { List<String> paths = uri.toString().split('?'); if (paths.length > 1) { Map parameters = Uri.splitQueryString(paths[1]); if (parameters['mode'] == 'resetPassword') { _resetPassword(parameters['oobCode']); } else if (parameters['mode'] == 'verifyEmail') { _verifyEmail(parameters['oobCode']); } } }); } |
上記のソースですが「https://hogehoge.page.link?mode=resetPassword」のようなURLで遷移してきた場合_resetPasswordが動きます。
Dynamic Linksの導入、実装は以上となります。
ここまでお付き合いいただきありがとうございました。