[Android] 020. Firebase In-app Messaging

なんか使う要件がありそうなので事前に調査してみました
といってもカスタムUIを使わないのであれば、実装する内容はほぼなし
https://firebase.google.com/docs/in-app-messaging/get-started?hl=ja&platform=android

Firebaseの説明を見た感じでは依存関係を追加して、Firebase側でキャンペーンを作るだけ
FirebaseApp.initializeApp()すら不要

ただ罠がありました
・テストキャンペーンがつくれない?次へボタンが非活性のままで先に進めず…
・Google Cloud ConsoleでFirebase In-App Messaging APIを有効にするのとAPIキーの設定で有効にしないと動作しない

[versions]
firebaseBom = "33.2.0"

[libraries]
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics" }
firebase-inappmessaging-display = { group = "com.google.firebase", name = "firebase-inappmessaging-display" }
dependencies {
    implementation(platform(libs.firebase.bom))
    implementation(libs.firebase.analytics)
    implementation(libs.firebase.inappmessaging.display)
}

何故か公式ドキュメントに説明がないっぽい発火イベント
analyticsのイベントが参考になるかも
https://support.google.com/analytics/answer/9234069?hl=ja

Event動作確認済み
on_foregroundアプリがフォアグラウンドになったタイミング
app_launchアプリが起動したタイミング
app_exceptionアプリでエラーが発生したタイミング
app_openアプリが初めて開かれたタイミング(インストール直後など)
app_removeアプリがアンインストールされたタイミング
fiam_actionIn-App Message内のボタンなどがタップされたタイミング
fiam_dismissIn-App Messageが閉じられたタイミング
fiam_impressionIn-App Messageが表示されたタイミング
screen_view特定の画面が表示されたタイミング
session_startアプリの操作がない状態でセッション タイムアウト時間が経過した後に、最小セッション継続時間を超えるアプリの使用があった
custom※Firebase.inAppMessaging.triggerEventで指定したタイミング

※ customキーは直接指定したいキーをFirebase Consoleで入力

同じキーで登録した場合は新しい方が先にでて、次に同じ表示タイミングが呼ばれたら次のが表示されるようです

// 表示したいタイミングでtriggerEventを呼ぶだけ
Firebase.inAppMessaging.triggerEvent("xxx")

Button Action

ボタンの実行をカスタマイズしたい場合は実行するURLを実装していないURLスキーム形式に変更すれば、ボタンを押してブラウザが起動されないので、それを利用します

val fbInAppMessagingClickListener = object : FirebaseInAppMessagingClickListener {
        override fun messageClicked(
            inAppMessage: InAppMessage, action: Action
        ) {
            // hoge://url?https://hoge.com/
            val url = URI(action.actionUrl).query
            val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url + "?id=xxx"))
            startActivity(intent)
        }
    }
}

override fun onStart() {
    super.onStart()
    FirebaseInAppMessaging.getInstance().addClickListener(fbInAppMessagingClickListener)
}

override fun onStop() {
    super.onStop()
    FirebaseInAppMessaging.getInstance().removeClickListener(fbInAppMessagingClickListener)
}

カスタムUI

カスタムUIを実装すると、当然ではありますがFirebase ConsoleでUIが指定できなくなるそうです

オフィシャルの説明はGitHubのサンプルをポイって感じ
https://github.com/firebase/firebase-android-sdk/tree/master/firebase-inappmessaging-display

試せるタイミングがきたらここらへん見ながら試そうと思います
https://blog.shinonome.io/firebsae-messaging/
https://techlife.cookpad.com/entry/2019/10/25/120000


Android Studio Koala Feature Drop 2024.1.2 built on August 23, 2024