起動中/未起動中に、Link を受信したら遷移する
Firebase Dynamic Links の Deep Link を、どの Widget にいても捌く方法。
抜粋したものを雑に示すとこんな感じ。navigatorKey が肝。
sample_app.dart
final _navigatorKey = GlobalKey<NavigatorState>();
FirebaseDynamicLinks.instance.onLink(onSuccess: (PendingDynamicLinkData dynamicLink) async {
await navigatePage(deepLink?.link);
});
Future<void> navigatePage(Uri deepLink) async {
final routeName = 'foo' // 実際には、dynamicLink の情報から組み立てる
await _navigatorKey.currentState.pushNamed(routeName);
}
runApp(
child: MaterialApp(
title: 'Sample Handling Firebase Dynamic Links',
navigatorKey: _navigatorKey,
home: Foo(),
),
);
foo.dart
Future<void> hoge() async{
// アプリが起動してない状態で Link を受信した場合に、ココでハンドリングしたいとする
final data = await FirebaseDynamicLinks.instance.getInitialLink();
await navigatePage(data?.link)
}
ちなみに
カスタムドメインを使う場合、iOS setup の最後の項目を忘れやすい気がするのでご注意。