Skip to content

Android向けライブ更新

Braze SDKでAndroidライブ更新(Progress Centric Notifications とも呼ばれます)を使用する方法について説明します。これらの通知はSwift Braze SDKのライブアクティビティに似ており、インタラクティブなロック画面通知を表示できます。Android 16では進行状況を中心とした通知が導入され、ユーザーが開始した最初から最後までのジャーニーをシームレスに追跡できるようになります。

仕組み

IBrazeNotificationFactoryインターフェイスを使用して、Brazeプッシュ通知の表示方法をカスタマイズできます。BrazeNotificationFactoryを拡張することで、通知がユーザーに表示される前にBrazeはファクトリーのcreateNotification()メソッドを呼び出します。その後、BrazeダッシュボードまたはREST APIを通じて送信されたカスタムのキーと値のペアを含むペイロードを渡します。

ライブ更新を表示する

このセクションでは、野生動物救助チームが誰が一番多くのフクロウを救えるかを競う新しいゲーム番組のホスト、Superb Owlとパートナーを組みます。彼らはAndroidアプリでライブ更新を活用して、進行中の試合のステータスを表示し、リアルタイムで通知をダイナミックに更新しようとしています。

Androidからのライブ更新の例

前提条件

この機能を使用する前に、Android Braze SDKを統合する必要がある。

ステップ 1: カスタム通知ファクトリーを作成する

アプリケーションで、BrazeNotificationFactoryを拡張してBrazeライブ更新の表示方法を処理する、MyCustomNotificationFactory.ktという名前の新しいファイルを作成します。

次の例では、Superb Owlは進行中の試合のライブ更新を表示するカスタム通知ファクトリーを作成しました。次のステップでは、getTeamInfoという新しいメソッドを作成し、チームのデータをアクティビティにマッピングします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class MyCustomNotificationFactory : IBrazeNotificationFactory {
    override fun createNotification(payload: BrazeNotificationPayload): Notification? {
        val notificationBuilder = populateNotificationBuilder(payload)
        val context = payload.context ?: return null

        if (notificationBuilder == null) {
            brazelog { "Notification could not be built. Returning null as created notification." }
            return null
        }
        notificationBuilder.setContentTitle("Android Live Updates").setContentText("Ongoing updates below")
        setProgressStyle(notificationBuilder, context)
        return notificationBuilder.build()
    }

    private fun setProgressStyle(notificationBuilder: NotificationCompat.Builder, context: Context) {
        val style = NotificationCompat.ProgressStyle()
            .setStyledByProgress(false)
            .setProgress(200)
            .setProgressTrackerIcon(IconCompat.createWithResource(context, R.drawable.notification_small_icon))
            .setProgressセグメント(
                mutableListOf(
                    NotificationCompat.ProgressStyle.セグメント(1000).setColor(Color.GRAY),
                    NotificationCompat.ProgressStyle.セグメント(200).setColor(Color.BLUE),
                )
            )
            .setProgressPoints(
                mutableListOf(
                    NotificationCompat.ProgressStyle.Point(60).setColor(Color.RED),
                    NotificationCompat.ProgressStyle.Point(560).setColor(Color.GREEN)
                )
            )

        notificationBuilder.setStyle(style)
    }
}

ステップ 2: カスタムデータをマッピングする

MyCustomNotificationFactory.ktで、ライブ更新が表示されたときにデータを処理するための新しいメソッドを作成します。

Superb Owlは、各チームの名前とロゴを拡張されたライブ更新にマッピングするために、以下のメソッドを作成しました。

class CustomNotificationFactory : BrazeNotificationFactory() {
    override fun createNotification(payload: BrazeNotificationPayload): Notification? {
        // Your existing code
        return super.createNotification(payload)
    }

    // Your new method
    private fun getTeamInfo(team: String?): Pair<String, Int> {
        return when (team) {
            "WBF" -> Pair("Wild Bird Fund", R.drawable.team_wbf)
            "OWL" -> Pair("Owl Rehab", R.drawable.team_owl)
            else  -> Pair("Unknown", R.drawable.notification_small_icon)
        }
    }
}

ステップ 3: カスタム通知ファクトリーを設定する

アプリケーションクラスでcustomBrazeNotificationFactoryを使用して、カスタム通知ファクトリーを設定します。

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        // Tell Braze to use your custom factory for notifications
        Braze.customBrazeNotificationFactory = MyCustomNotificationFactory()
    }
}

ステップ 4: アクティビティを送信する

/messages/send REST APIエンドポイントを使用して、ユーザーのAndroidデバイスにプッシュ通知を送信できます。

curlコマンドの例

Superb Owlは以下のcurlコマンドを使ってリクエストを送信しました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
curl -X POST "https://BRAZE_REST_ENDPOINT/messages/send" \
  -H "Authorization: Bearer {REST_API_KEY}" \
  -H "Content-Type: application/json" \
  --data '{
    "external_user_ids": ["USER_ID"],
    "messages": {
      "android_push": {
        "title": "WBF vs OWL",
        "alert": "2 to 4 1:33 Q4",
        "extra": {
          "live_update": "true",
          "team1": "WBF",
          "team2": "OWL",
          "score1": "2",
          "score2": "4",
          "time": "1:33",
          "quarter": "Q4"
        },
        "notification_id": "ASSIGNED_NOTIFICATION_ID"
      }
    }
  }'

リクエストパラメーター

キー 説明
REST_API_KEY messages.send権限を持つBraze REST APIキー。

これはBrazeダッシュボードの設定 > APIキーから作成できます。
BRAZE_REST_ENDPOINT RESTエンドポイントのURL。エンドポイントはインスタンスのBraze URLに応じて異なります。
USER_ID 通知を送信するユーザーのID。
messages.android_push.title メッセージのタイトル。デフォルトでは、これはカスタム通知ファクトリーのライブ通知には使用されませんが、フォールバックとして使用できます。
messages.android_push.alert メッセージの本文。デフォルトでは、これはカスタム通知ファクトリーのライブ通知には使用されませんが、フォールバックとして使用できます。
messages.extra カスタム通知ファクトリーがライブ通知に使用するキーと値のペア。この値には任意の文字列を割り当てることができます。ただし、上記の例では、live_updatesを使用して、デフォルトのプッシュ通知かライブプッシュ通知かを判断しています。
ASSIGNED_NOTIFICATION_ID 選択したユーザーのライブ通知に割り当てる通知ID。IDはこのゲームに対して一意である必要があり、後で既存の通知を更新するために使用する必要があります。

ステップ 5: アクティビティを更新する

既存のライブ更新を新しいデータで更新するには、messages.extraに割り当てられた関連するキーと値のペアを修正し、同じnotification_idを使用して/messages/sendエンドポイントを再度呼び出します。

New Stuff!