はじめに
今回はAndroidでFDLやカスタムURLスキーム実装をする際に気をつけたいことを紹介していきます
本文
今回、自分が少しハマってしまったのが取得タイミングです
自分は今までonCreate
でデータを取得するようにしていましたが、そうするとアプリがバックグラウンドにある時にうまく取得できませんでした。
そこで下記のように実装することでバックグラウンド等関係なく取得することに成功しました。
また、intent
を渡すようにしないとonNewIntent
でのカスタムURLスキーム取得がうまくいかないので注意が必要です
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkLink(intent)
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
checkLink(intent)
}
private fun checkLink(intent: Intent?) {
Firebase.dynamicLinks
.getDynamicLink(intent)
.addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? ->
pendingDynamicLinkData?.let {
// FDL取得時のコード
}
} ?: kotlin.run {
val uri = intent?.data
// カスタムURLスキーム取得時のコード
}
}
.addOnFailureListener(this) { e -> Log.w("TAG", "getDynamicLink:onFailure", e) }
}
最後に
今回は自分が少しハマってしまった部分を紹介していきました
どなたかのお役に立てれば幸いです