Step 1) receiver 설정하기
AndroidManifest.xml 파일에 receiver 를 추가합니다.<application
...>
<receiver
android:name="..."
android:enabled="true"
android:exported="false"
>
<intent-filter>
<action android:name="ai.fairytech.moment.action.NOTIFICATION_SENT" />
</intent-filter>
</receiver>
</application>
Step 2) 수신된 값 확인 및 처리
/**
* Moment SDK가 알림을 표시했을 때 호출되는 브로드캐스트입니다.
*
* 수신 Action:
* ai.fairytech.moment.action.NOTIFICATION_SENT
*
* notification_type 값에 따라 알림의 종류를 구분할 수 있습니다.
*
* DEVICE:
* - 사용자가 특정 앱 또는 페이지에 진입/이탈했을 때 표시되는 일반 알림입니다.
* - campaign_id, business_id, activity_match_type, page_name 값이 포함될 수 있습니다.
*
* FGS:
* - 포그라운드 인식 서비스에서 표시되는 상주 알림입니다.
* - campaign_id, business_id, activity_match_type, page_name 값은 전달되지 않을 수 있습니다.
*/
class NotificationSentReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action != "ai.fairytech.moment.action.NOTIFICATION_SENT") return
// 알림 종류
// 예: "DEVICE", "FGS"
val notificationType = intent.getStringExtra("notification_type")
// 알림 고유 ID
// 예: "64f1a2b3c4d5e6f7890abc12"
val notificationId = intent.getStringExtra("notification_id")
// 알림 제목
// 예: "테스트 알림"
val title = intent.getStringExtra("title")
// 알림 본문
// 예: "앱 진입 알림입니다. 클릭 시 네이버로 이동합니다."
val body = intent.getStringExtra("body")
// 알림 이미지 URL
// 값이 없으면 null일 수 있습니다.
// 예: "<https://storage.googleapis.com/fairy-image/kurly.png>"
val imageUrl = intent.getStringExtra("image_url")
// 알림 클릭 시 이동할 URL
// 값이 없으면 null일 수 있습니다.
// 예: "<https://naver.com>"
val clickUrl = intent.getStringExtra("click_url")
// 캠페인 고유 ID
// DEVICE 알림에서만 전달될 수 있습니다.
// 예: "64f1a2b3c4d5e6f7890abc12"
val campaignId = intent.getStringExtra("campaign_id")
// 인식된 앱 또는 서비스의 ID
// DEVICE 알림에서만 전달될 수 있습니다.
// 예: "kurly"
val businessId = intent.getStringExtra("business_id")
// 앱 인식 시점
// DEVICE 알림에서만 전달될 수 있습니다.
// 예: "ENTER", "EXIT"
val activityMatchType = intent.getStringExtra("activity_match_type")
// 인식된 페이지 이름
// 인식된 앱에 따라 값이 없을 수 있습니다.
// 예: "CART", "ORDER_COMPLETE"
val pageName = intent.getStringExtra("page_name")
// SDK가 알림을 표시한 시각입니다. Unix timestamp milliseconds 값입니다.
// 예: 1782978887405
val timestampMillis = intent.getLongExtra("timestamp_millis", 0L)
// 사용자에게 노출된 알림 형태가 버블 알림인 경우 true
val isBubble = intent.getBooleanExtra("is_bubble", false)
}
}