[iOS] Notification Push 사용 - 4 : Push 확인

Sean·2023년 5월 23일
0

iOS 앱 기능

목록 보기
4/4

누군가에게 알려주기 보다는 나 스스로 정리 하며 언젠가 다시 사용할 때를 대비하는 글을 작성할것이다.

시작

시작글

  • 해당 포스트는 3편까지 진행된 상태의 프로젝트로 진행을 하기에 관련 프로젝트 작성된게 없다면 3편을 한 번 보는걸 추천한다.

  • FCM으로 직접받으면서 하면 좋겠지만 FCM은 push가 오는게 느려 3편의 마지막 번외에서 이야기 했던 푸시 알림-테스터 프로그램을 사용하여 진행을 할 예정이다.

  • 즉, 해당 방법은 테스터로만 하는것이기에 혹시나 다른곳에서 다른 방법을 쓴다면 그 방법대로 보는것이 맞다.

분석

다음과 같은 내용의 Push를 테스터를 통해 앱에 직접 보낸다.

push를 클릭하게 될 경우 동작할 코드를 userNotificationCenter() 해당 함수에 작성한다.

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse) async {
	print("In_UserNotification")

    let userInfo = response.notification.request.content.userInfo
	print("userInfo: \(userInfo)")
	let title = response.notification.request.content.title
	print("title: \(title)")
	let body = response.notification.request.content.body
    print("body: \(body)")
    
    guard let aps = userInfo["aps"] as? Dictionary<String, Any> else { return }
    print("========== ========== ==========")
    print(aps)
        
    guard let alert = aps["alert"] as? Dictionary<String, Any> else { return}
    print("========== ========== ==========")
    print(alert["sound"])
        
    guard let url: String = userInfo["velog_URL"] as? String else { return }
    print("========== ========== ==========")
    print(url)
    print("========== ========== ==========")
        
    if let messageID = userInfo[gcmMessageIDKey] {
    	print("MessageId: \(messageID)")
	}
}

일단 Push 로 받은 값은 userInfo에 저장을 시킨다. 해당 타입은 Dictionary로 [AnyHashable : Any] 의 형식을 가진다.

그렇기에 해당 데이터를 사용할 수 있는 타입으로 타입캐스팅 하는 과정을 거치게 된다.

Push되는 자료를 보면 velog_URL 부분은 string 한줄 aps 부분은 또다른 dictionary 로 구성이 되었기에 해당 부분에 맞는 타입으로 타입캐스팅을 해준다.

해당 방법 외에도 push의 title과 body에 들어가는 내용은 따로 타입 캐스팅과 같은 방법을 거치지 않고 확인 하는 방법도 가능하다.

참고자료

기타

당연 틀린 부분 지적은 감사하나 비난은 정중하게 사양하겠다.

profile
"잘 할 수 있을까?"를 고민하기보단 재밌어 보이는건 일단 하고, 잘하기 위해 그냥 계속합니다.

0개의 댓글