콘텐츠로 건너뛰기

Android용 라이브 업데이트

Braze SDK에서 Android 라이브 업데이트를 사용하는 방법을 알아보세요. 진행률 중심 알림이라고도 합니다. 이러한 알림은 인터랙티브 잠금 화면 알림을 표시할 수 있는 Swift Braze SDK의 라이브 활동과 유사합니다. Android 16은 사용자가 시작한 처음부터 끝까지의 여정을 원활하게 추적할 수 있도록 진행률 중심 알림을 도입했습니다.

작동 방식

IBrazeNotificationFactory 인터페이스를 사용하여 Braze 푸시 알림이 표시되는 방식을 커스텀할 수 있습니다. BrazeNotificationFactory를 확장하면 Braze가 사용자에게 알림을 표시하기 전에 팩토리의 createNotification() 메서드를 호출합니다. 그런 다음 Braze 대시보드 또는 REST API를 통해 전송된 커스텀 키-값 페어가 포함된 페이로드를 전달합니다.

Live Update 표시하기

이 섹션에서는 야생동물 구조 팀들이 누가 가장 많은 올빼미를 구할 수 있는지 경쟁하는 새로운 게임 쇼의 진행자인 Superb Owl과 함께 작업합니다. Superb Owl은 Android 앱에서 Live Updates를 활용하여 진행 중인 경기 상태를 표시하고, 알림을 실시간으로 동적 업데이트하고자 합니다.

Android의 Live Update 예시

필수 조건

이 기능을 사용하려면 먼저 Android Braze SDK를 통합해야 합니다.

1단계: 커스텀 알림 팩토리 생성

애플리케이션에서 BrazeNotificationFactory를 확장하는 MyCustomNotificationFactory.kt라는 새 파일을 생성하여 Braze Live Updates가 표시되는 방식을 처리합니다.

다음 예시에서 Superb Owl은 진행 중인 경기에 대한 Live Update를 표시하기 위해 커스텀 알림 팩토리를 생성했습니다. 다음 단계에서는 팀 데이터를 액티비티에 매핑하기 위해 getTeamInfo라는 새 메서드를 생성합니다.

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))
            .setProgressSegments(
                mutableListOf(
                    NotificationCompat.ProgressStyle.Segment(1000).setColor(Color.GRAY),
                    NotificationCompat.ProgressStyle.Segment(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에서 Live Updates가 표시될 때 데이터를 처리할 새 메서드를 생성합니다.

Superb Owl은 각 팀의 이름과 로고를 확장된 Live Updates에 매핑하기 위해 다음 메서드를 생성했습니다:

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 명령을 사용하여 요청을 전송했습니다:

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 커스텀 알림 팩토리가 라이브 알림에 사용하는 키-값 페어입니다. 이 값에 임의의 문자열을 할당할 수 있지만, curl 명령 예시에서는 live_updates를 사용하여 기본 푸시 알림인지 라이브 푸시 알림인지 판별합니다.
ASSIGNED_NOTIFICATION_ID 선택한 사용자의 라이브 알림에 할당할 알림 ID입니다. 이 ID는 해당 게임에 고유해야 하며, 나중에 기존 알림을 업데이트하기 위해 사용해야 합니다.

5단계: 액티비티 업데이트

기존 Live Update를 새 데이터로 업데이트하려면 messages.extra에 할당된 관련 키-값 페어를 수정한 다음, 동일한 notification_id를 사용하여 /messages/send 엔드포인트를 다시 호출합니다.

New Stuff!