なんか使う要件がありそうなので事前に調査してみました
といってもカスタム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_action | In-App Message内のボタンなどがタップされたタイミング | ○ |
fiam_dismiss | In-App Messageが閉じられたタイミング | ○ |
fiam_impression | In-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