Ccmmutty logo
Commutty IT
2 min read

Android アプリからの Dynamic Links 遷移中にブラウザで開いているタブがチラ見えするのを防ぎたい

https://cdn.magicode.io/media/notebox/99dcb049-4e6d-45a7-a28c-337c9a46d427.jpeg
Android アプリで Firebase Dynamic Links を開く実装を
startActivity(Intent(Intent.ACTION_VIEW, url.toUri()))
のように外部ブラウザ起動にすると Deep link の表示が完了するまでの間に 2 点気になる挙動があります。
  1. 遷移がゴチャっとしており、[ブラウザに遷移] → [アプリに戻る] → [Deep link 表示] というフローになる
  2. ブラウザに開きっぱなしのタブがあるとそれが一瞬見切れてしまう場合がある 👀
Dynamic Links そのものは正常に動作するため、問題視するかしないかは各人の感覚によると思います 💭

回避策

この挙動をどうにかできないか検討してみた結果、Chrome の Custom Tabs を用いればよいのではないかという結論に至りました(Slack アプリで Dynamic Links をタップしても上記の問題が発生しなかったので参考にしました)。

実装

dependencies {
    // Custom Tabs の依存関係を追加
    implementation "androidx.browser:browser:1.5.0"
    // ...
}
// Custom Tabs で Dynamic Links を開く
CustomTabsIntent.Builder().build().launchUrl(context, url.toUri())

Custom Tabs の挙動について

  1. Dynamic Links を開いた場合の遷移は [Custom Tabs 表示] → [アプリ表示] → [Deep link 表示] という一方向に進むフローになる
  2. Dynamic Links を開くと Custom Tabs が立ち上がるためブラウザで開いているタブがあったとしても見えることはない 🙈

所感

全然大差ない説はありますが若干はマシな動きになっているかもしれません 💭 もっと素敵な解決策があればご教示願いたいです 🙇‍♂️

Discussion

コメントにはログインが必要です。