【iOS】Firebase In-App Messagingでイベントをトリガーにメッセージを送ってみた

2022.06.18

前回試してみたIn-App Messagingですが、今回はFirebase Analyticsのイベントを組み合わせて、特定のイベントが発生したらメッセージを表示するような実装をしていきたいと思います。

環境

  • Xcode 13.3.1
  • Firebase Apple SDK 9.1.0

はじめに

【iOS】Firebase In-App Messaging を使ってアプリ内メッセージを送ってみた

前回試したこちらの記事の続編になります。FirebaseInAppMessaging-BetaとFirebaseにアプリの登録、アプリ内でFirebase SDKの初期化がまだの方は、まずはこの記事を見ていただければと思います。

準備

FirebaseAnalyticsの導入

今回はFirebase Analyticsのイベントを使用する為、FirebaseAnalyticsのパッケージをプロジェクトに追加します。

Xcodeで File > Add Packages... をクリックし開かれた画面の検索フォームにhttps://github.com/firebase/firebase-ios-sdkを入力します。

入力すると、firebase-ios-sdkというパッケージが出てくるので、Dependency RuleをUp to Next Major Versionを指定します。

Add Packageボタンを押すとパッケージの追加処理が開始します。少し追加の処理に時間がかかるイメージがありますが気長に待ちください。

しばらくすると、 Firebase SDKのどのプロダクトを選択するかを決める画面が出てきます。

今回使用するFirebaseAnalyticsを選択して、Add Packageボタンを押します。これでSDK追加は完了です。

イベントを記録する

In-App Messagingでイベントをトリガーにする場合は、Firebase側で最初から用意されている推奨イベントを使うことも出来ますが、今回はカスタムイベントを作成します。

Analytics.logEvent

logEventでは第一引数に、イベント名、第二引数にパラメータを渡すことが出来ます。パラメータは最大25個まで渡すことが出来ます。パラメータが無い場合はnilを指定することが出来ます。

class func logEvent(_ name: String, parameters: [String : Any]?)

イベントは、Firebaseプロジェクト内のアプリインスタンスあたり500個まで収集できます。

イベント名の注意点

  • イベント名の長さは最大40文字
  • 英数字とアンダースコア_のみを含めることができ、英字で始める必要がある
  • firebase_google_ga_のプレフィックスは予約されているため、使用しないでください

この条件を満たない場合は、正常に記録されないので注意が必要です。

実装する

Storyboard

今回はボタンを押すとセグエ遷移を行い、遷移先でイベントをトリガーにメッセージを表示したいのでTriggerViewControllerというものを用意しました。

TriggerViewController

viewDidLoadのタイミングだと変なタイミングでメッセージが表示されてしまうので、今回はviewDidAppearのタイミングでメッセージを表示するように実装しました。

今回はパラメータは使用しない為、nilにしています。イベント名は、trigger_testにしました。

import UIKit
import FirebaseAnalytics

class TriggerViewController: UIViewController {

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        Analytics.logEvent("trigger_test", parameters: nil)
    }
}

Firebaseコンソールからメッセージを作成する

FirebaseコンソールのエンゲージメントにあるMessagingを選択し、表示された画面の新しいキャンペーンを作成を押します。

通知とアプリ内メッセージングが選択できるのでアプリ内メッセージングを選択します。

メッセージのレイアウトを選択

メッセージのレイアウトは今回はモーダルにしました。

モーダルにした場合は、メッセージのタイトルは必要ですが、添付する画像やメッセージの本文は任意になります。

入力したら、 次へを押します。

宛先の選択

次は宛先の選択です。

まず、キャンペーンのレポートで表示されるキャンペーン名を設定します。

対象ユーザーの箇所は、アプリでメッセージを送信したいアプリを選択します。その横にあるおよびを押すことでユーザープロパティなどでさらに対象条件を絞り込むことが出来ます。

送信したいアプリを選択したら、次へを押します。

スケジュールの選択

次はスケジュールの選択です。

メッセージを配信する開始時期と終了時期を指定出来ます。

このイベントという箇所を指定することで特定のイベントをトリガーにメッセージを表示させることが出来ます。デフォルトでアプリが表示された時になっているのですが今回は不必要なので削除しました。

こちらのイベントを押すと、イベントを指定できるダイアログが出てきます。

ですが、まだ一度もイベントログを記録していない為、trigger_testが選択肢として出てきていません。なので、直接入力します。

trigger_testと入力すると、イベント trigger_testを作成と表示されるのでクリックします。

イベントの箇所にtrigger_testが追加されていればOKです。

デバイスあたりの頻度の制限は最大1日1回までで設定出来ます。今回は特に使用しない為、初期値のままにしておきます。

その他、コンバージョンイベントやオプションの設定が出来ますが、任意になりますので今回は画面下の確認ボタンを押して配信確認に移ります。

キャンペーンの確認

キャンペーンの確認画面が出てきます。

内容に問題がなければ公開ボタンを押しましょう。メッセージが公開されます。

実機で動作を確認する

メッセージが公開されたので正常に動くか試してみます。

実装したイベントをトリガーにメッセージを配信することが出来ました!

おわりに

Firebase Analyticsのイベント追加も簡単にできて、そのイベントをトリガーにメッセージを送るのも簡単にコンソール上で設定することが出来ました!また配信対象を絞るのも試してみたいと思います。

参考

モバイルアプリ開発のチームメンバー絶賛募集中!

モバイル事業部では事業会社様と一緒に、数年間にわたり長期でモバイルアプリをグロースさせています。

そんなモバイルアプリ開発のチームメンバーを絶賛募集中です!

もちろんモバイルアプリ開発以外のエンジニアも募集中です!

クラスメソッド採用サイト