iOS

Push Notification 과 APNS - iOS

나른한코딩 2022. 4. 14. 15:46

 

 

 

Notification에 대해 공부하고

정리하려니 끝도 없어서

오늘은 Push Notification의 개괄적인 내용에 대해 우선작성하고

추후에 PushNofigication을 보내보는 실습 프로젝트에 대해 업로드 하면서 자세히 작성하고자 합니다!

 

.

.

.

.

 

 

Push Notification 이란?

 

iOS입장에서 알림을 받는 상황은 두 가지가 있습니다.

 

1. forground 상태일 때(사용자가 앱을 사용중일 때, 화면에 보여질때)

2. backgorund 상태일 때(사용자가 앱을 사용하지않고 있을 때, 화면에 보여지지 않을 때)

 

 

foreground 상태일 때는 앱에서 특정 시점에 알림을 보내면 되지만,

"만약 background 상태이면..? 앱이 실행중이지 않은 상태라면..?"

어떻게 처리해주어야할까 하는 의문이 들 것입니다.

 

 

App Life-Cycle를 보면 background 상태가 되면 모든 처리 기능이 제한됩니다.

background 상태에서는 베터리 수명을 절약하기 위해, 앱이 아주 제한된 기능만 수행할 수 있도록 하기때문이죠 🤔

 

하지만 background 상태에서도 중요한 정보를 사용자에게 알려야할 때가 있습니다!

이럴때 사용하는 것이 Push Notification 입니다.

 

 

 


 

APNS 란?

APNs = Apple Push Notification System

 

애플의 모든 노티피케이션은 APNS를 통해 관리된됩니다.

Third Party 개발자(Push Server)가 앱에 알림을 보낼 수 있도록 apple에서 만든 알람 서비스 플랫폼입니다.

 

예를 들어

카톡에 알람이 울리려면

카톡 서버에서 APNs에 알리면 APNs가 사용자에게 알리는 중간다리 역할을 해주는 것입니다!

 

 

Foreground에서 push 받기

background에서는 default로 수신되고

forground에서 수신하려면 별도로 설정을 해주어야 합니다.

→ firebase의 기능이 아닌, apple의 로컬에서 설정해주어야 하는 부분.

 

forground 수신 부분의 함수 작성

- completionHandler에서 .alert는 iOS14에서 deprecated 되었음.
- .alert 대신 .list, .banner 를 사용한다. (new)

 

 

 


 

Foreground로 push를 받았을 때,  push click event 대한 대처

사용자가 push를 누르지 않으면 iOS는 사용자가 push를 확인했는지 아닌지를 알 수 없습니다.

→ iOS 자체 수신 여부 확인 불가

 

 

 

사용자가 푸시를 클릭했을 떄에 한해 확인 가능합니다..

 

ex) Android는 수신 여부 확인 가능.

( push가 device에 도착을 헀는가 여부를 체크 가능 )

→ iOS는 안하는게 아니라 못하는 것..

 

 

 

그럼 어떻게 알 수 있는가?

→ push를 눌렀을 때 화면을 전환해주는 등의 이벤트 발생 시키기!

userNotificationCenter(_ center: , didReceive reponse: ~) 부분 작성

 

 

 

상세정보 확인하기

사용자 정보와 body부분의 상세 내용 프린트해보기

 

 

response를 출력하면 우리가 원하는 정보를 볼 수 없지만,

request로 들어가 우리가 원하는 상세 정보에 접근하여 print 해보면 확인할 수 있습니다.

 

 

 

 

 

 

 

+ 추가로 더 작성할 예정입니다 :)

 

 

 

 

 

반응형