Firebase Dynamic Links(FDL)でのアプリ起動について勘違いしており余計な時間を過ごしたので、「何を勘違いしたか?何が正しかったか?」ベースで知見共有させてください。
実現したかった要件
WebからURLを踏んでアプリ起動をし、webの画面に応じた画面をiOSアプリでも起動したい
勘違いした部分
5: 次に、application:continueUserActivity:restorationHandler: メソッドを使用して、アプリがインストールされている場合にユニバーサル リンクとして受信されるリンクを処理します(iOS 9 以降)。
6: 最後に、application:openURL:sourceApplication:annotation: メソッド(iOS 8 以前)と application:openURL:options: メソッド(iOS 9 以降)で、アプリのカスタム URL スキームを通して受信したリンクを処理します。これらのメソッドが呼び出されるのは、アプリが iOS 8 以前でリンクを受信したときと、iOS(バージョンを問わず)にアプリをインストールした後にアプリが初めて開かれたときです。
どう勘違いしたか?
Firebaseが内部で色々やっていて、universal links→custom URL schemeの順番で実行されるので、どちらも対応していないと、FDL起動しない。(これは誤り)
正しくはどうなのか?
カスタムURLスキーム、もしくはuniversal linksを利用してアプリ起動される。
ドキュメントをきっちり読むと、
(カスタムURLスキームの起動について)これらのメソッドが呼び出されるのは、アプリが iOS 8 以前でリンクを受信したときと、iOS(バージョンを問わず)にアプリをインストールした後にアプリが初めて開かれたときです。
と書いてあるので、
- iOS8以前の時とアプリインストール後の初回起動時にカスタムURLスキーム経由でアプリ起動される。
- それ以降の起動は、iOS9以降ならuniversal links経由で行われる。
という風になるのではないでしょうか。
こちらの記事で、
「FDLならば、未インストールの時にストアに遷移してインストール→アプリ起動した場合でもDeepLinkパラメータを保持することができます」
と書いてあったので、1.は「FDL発行のリンク経由でアプリインストールを行った初回起動時には、カスタムURLスキーム経由でアプリ起動される。」というニュアンスで捉えていますが、カスタムURLスキームの技術背景のソースが見つからなかったのと、自由にいじれるリリース済みのアプリを持っていないので検証はしていないということもあり、あくまで推測としてお受け取りください。ご存知の方いらっしゃれば教えていただけると幸いです。
参考記事