Android向けライブ更新
Braze SDKでAndroidライブ更新(Progress Centric Notifications とも呼ばれます)を使用する方法について説明します。これらの通知はSwift Braze SDKのライブアクティビティに似ており、インタラクティブなロック画面通知を表示できます。Android 16では進行状況を中心とした通知が導入され、ユーザーが開始した最初から最後までのジャーニーをシームレスに追跡できるようになります。
仕組み
IBrazeNotificationFactoryインターフェイスを使用して、Brazeプッシュ通知の表示方法をカスタマイズできます。BrazeNotificationFactoryを拡張することで、通知がユーザーに表示される前にBrazeはファクトリーのcreateNotification()メソッドを呼び出します。その後、BrazeダッシュボードまたはREST APIを通じて送信されたカスタムのキーと値のペアを含むペイロードを渡します。
ライブ更新を表示する
このセクションでは、野生動物救助チームが誰が一番多くのフクロウを救えるかを競う新しいゲーム番組のホスト、Superb Owlとパートナーを組みます。彼らは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"
}
}
}'

curlコマンドはテストに役立ちますが、すでにiOSライブアクティビティを処理しているバックエンドでこの呼び出しを処理することをおすすめします。
リクエストパラメーター
| キー | 説明 |
|---|---|
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エンドポイントを再度呼び出します。