jsonDict 는 일반 문자열입니다. 해당 문자열은 JSON 형식으로 되어있으니 사용하시는 JSON Parser를 이용하여 JSON 객체로 전환하여 사용해주세요.
최상위 객체의 구조
최상위 Payload 키
Payload 값
필수여부
RW_push_payload_WP
Sub객체 (아래 Sub객체 참조)
필수
Sub객체의 구조
Payload 키
Payload 값
필수여부
RW_push_payload_TT
메시지 타이틀
필수
RW_push_payload_BD
메시지 내용
필수
RW_push_payload_IM
이미지 URL
X
RW_push_payload_MV
유튜브 동영상 URL
X
RW_push_payload_deeplink
딥링크 URL
X
앱이 백그라운드 상태일 때
앱이 백그라운드이거나 Killed 된 상태인 경우, 위의 메쏘드가 호출되지 않습니다.
알림 메시지는 앱이 백그라운드 상태에서 알림 표시줄에 배너 형태 등으로 표시됩니다. 해당 알림 메시지를 탭하면 아래와 같은 "userNotificationCenter(_:didReceive:withCompletionHandler:)" 메쏘드가 호출됩니다. 해당 메쏘드에서 데이터를 추출하여 사용합니다.
// UNUserNotificationCenterDelegate 프로토콜 구현
@main
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
...
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
print("userInfo: \(response.notification.request.content.userInfo)")
if let rootDict = response.notification.request.content.userInfo as NSDictionary? {
if let jsonDict = rootDict["RW_push_payload_WP"] as? NSDictionary {
let title = jsonDict["RW_push_payload_TT"]
let body = jsonDict["RW_push_payload_BD"]
let deepLink = jsonDict["RW_push_payload_deeplink"]
print("Notification title: \(title), body: \(body), deepLink: \(deepLink)")
}
}
completionHandler()
}
...
}