그로스 액션 푸시 UI 직접 구성하기 [iOS]
팔로우
시작하기
본 가이드는 그로스액션 푸시 UI를 직접 구성하기 위한 내용을 안내합니다.
푸시 기본 연동 및 설정하기
푸시UI를 직접 구성하기 전에 푸시 전송을 위한 기본 연동 및 설정이 진행되어야 합니다.
아래의 가이드를 참고하여 기본 연동 및 설정을 진행해주세요.
[[인용:안내:보통]] 푸시UI를 직접 구성하지 않는다면!!!
푸시UI를 직접구성하지 않고 디파이너리가 제공하는 템플릿을 그대로 사용하기를 원하신다면 본 가이드가 아니라 위 링크의 가이드를 참고해주세요.
푸시 데이터 파싱하기
앱에 구성하신 푸시 리시버를 통해 수신한 푸시 페이로드를 SDK의 parsePushData API에 전달하여 모델링된 디파이너리 푸시 페이로드를 얻을 수 있습니다.
ParsePushData API
이 API는 전달된 페이로드를 검사하여 AdBrixRm.AbxRemotePushModel로 변환된 데이터를 리턴합니다.
아래의 샘플 코드는 파이어베이스의 푸시 수신 리시버 함수 안에서 ParsePushData API를 이용하여 그로스액션 푸시 페이로드를 얻는 것을 나타냅니다.
do {
let abxRemotePushModel = try AdBrixRM.getInstance.parsePushData(userInfo)
print("ParsePushData :: \(abxRemotePushModel.toString())")
} catch {
print(error)
}
[[인용:안내:보통]] 참고해주세요!
API에 전달된 페이로드가 디파이너리의 푸시가 아닌 경우에는 JSON 예외가 발생합니다.
푸시 페이로드 모델 정의
푸시 페이로드 모델의 항목은 다음과 같습니다.
항목 | 설명 | 비고 |
---|---|---|
title | 푸시의 타이틀입니다. | |
subTitle | 푸시의 서브 타이틀입니다. | |
body | 푸시의 메시지 내용입니다. | |
imageUrl | 푸시의 이미지URL 입니다. | |
genVibe | 푸시 수신 시 진동 설정 여부입니다. | |
genSound | 푸시 수신 시 사운드 설정 여부입니다. | |
campaignId | 그로스액션 푸시캠페인 아이디입니다. | 푸시 오픈 트래킹 용 |
campaignRevisionNo | 그로스시나리오의 리비전 넘버입니다. | 푸시 오픈 트래킹 용 |
stepId | 그로스시나리오의 스텝 아이디입니다. | 푸시 오픈 트래킹 용 |
cycleTime | 그로스시나리오의 사이클 타임입니다. | 푸시 오픈 트래킹 용 |
deeplinkUrl | 푸시 캠페인에 설정된 딥링크URL 입니다. |
푸시 페이로드 모델 샘플
푸시 페이로드 모델 샘플 데이터입니다. 아래 데이터를 이용하여 미리 룩앤필을 구성해보실 수 있습니다.
AbxRemotePushModel{
title='default-title',
body='default-body',
subTitle='default-subtitle',
imageUrl='https://c.files.bbci.co.uk/12A9B/production/_111434467_gettyimages-1143489763.jpg',
campaignId='12345',
campaignRevisionNo=2,
stepId='b2',
cycleTime='2019092008',
deeplinkUrl='scheme://host?key=value'
}
푸시 오픈 이벤트 분석
푸시UI를 직접 구성하시는 경우에는 반드시 푸시 오픈 이벤트를 디파이너리로 전달하여야 합니다.
유저가 푸시를 클릭하는 시점에 아래와 같이 openPush API를 호출합니다.
override open func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void){
let userInfo = response.notification.request.content.userInfo
do {
let trackPushModel = try AdBrixRM.getInstance.parsePushData(userInfo)
AdBrixRM.getInstance.openPush(trackPushModel)
} catch {
print(error)
}
}
[[인용:위험:보통]] 주의하세요!!!
openPush API를 적절하게 연동하지 않은 경우에, 푸시 오픈률 등의 리포팅을 확인하지 못할 수 있습니다.