본문 바로가기
프로젝트 만들어보기/Firebase

[iOS] Remote Notification (Firebase Cloud Messaging)

by 데브킹덕 2022. 12. 1.

Remote Notification (원격 알림, 서버 설정) 

- 서버로부터 push를 앱에 띄우는 것

- 알림을 생성하고 사용자 장치에 푸시알림을 보내고 싶을때 (why? 중요한 정보를 제공하기 위해 )

- 앱이 실행중이 아닌 경우에도 앱을 사용하는 기기에 소량의 데이터를 푸시함

👉 localNotification(앱으로 부터 push를 앱에 띄우는)은 https://01pkd95.tistory.com/290

 

필요 요소

- Provider : 공급자 서버 (Firebase Cloud Messaging으로 대체)

- APNs(Apple  Push Notification Service): 애플 푸시 알림 서비스

- 사용자의 기기

- 사용자의 기기에서 실행중인 앱

 

 

순서)

1. 원격알림을 보낼수 있는 서버에서 시작

- 사용자에게 보낼 알림과 보낼 시기를 결정함

- 보낼 시기 등 조건이 만족되면 알림 데이터와 사용자 장치의 고유 식별자가 포함된 요청을 생성함

- 요청을 APNs에 전달

 

2. APNs에서 사용자 장치로의 알림 전달을 처리함 

 

3. 알림을 수신하면 사용자 장치의 운영 체제는 모든 사용자 상호 작용을 처리, 앱에 알림을 전달함

 

APNs 특징

- 알림할 장치가 오프라인일 경우 APNs에서 알림을 제한된 시간동안 저장, 온라인 상태로 전환이 되면 전달하게 됨 

- 기기 및 앱별로 가장 최근에 앱을 저장함 (이전에 내용은 삭제되고 가장 최근에 것을 저장함 )

- Provider가 여러개면 최신상태로 저장하다가 장치가 오랫동안 오프라인 상태면 저장된 것을 삭제하는 식으로 관리함 

 

보안 역할 

- APNs는 자체 보안 아키텍처를 이용해서 원격 알림을 안전하게 제어함 

- 보안을 위해 2가지 신뢰 수준을 사용함 Connection Trust, Device Token을 사용함 

 

Connection Trust (연결 신뢰)

Provider -> APNs (백엔드 개발자가 주로함)

- 애플과 계약을 맺은 회사가 소유한 승인된 공급자만 APNs와 연결을 해서 푸시알림 전달을 할 수 있게 해서 연결 신뢰를 구성

- 공급자 서버는 APNs간에 Connection Trust가 있는지 확인하기 위해 확인 방법 두가지 있음

1. token-based - 유요한 인증키를 이용해서 확인

2.certificate - based  - SSL인증서를 이용해서 인증

 

APNs -> 장치

-승인된 장치만 APNs에 연결해서 알림을 받을 수 있도록함 

 

 

Device token trust 

- 각 원격 알림에서 알림이 옳바른 제공자와 장치 사이에서만 라우팅되도록하는 것 

- 애플이 특정 장치에 특정앱에 할당한 고유식별자를 포함하는 NSData 인스턴스

- APNs만 오직 해독할 수 있음 

1. 앱은 원격알림을 사용하기 위해 APNs에 등록을 하게 됨

2. 고유한 장치 토큰을 APNs로 부터 받음

3. 앱이 Provider에게 토큰을 전달함

4. Provider는 연결된 장치를 대상으로 하는 각각의 Push 알림 요청에 장치 토큰을 포함해서 전달을 해야함

5. APNs는 Device 토큰을 통해 Push 알림이 고유한 앱에 전달되도록 조정

 

*APNs가 Device token을 새로 발급 받는 경우

(항상 고유한 상태를 바라보게 하기 위함)

- 새기기에 앱을 설치

- 백업을 통한 복원

- 운영체제를 다시 설치,업데이트  

 

Firebase Cloud Messaging

APNs의 보안 요건을 갖춘 서버를 대신해 Firebase Cloud Messaging을 사용

 

주요기능)

- 원격 알림 메시지 전송: 사용자에게 표시되는 알림 메시지를 실시간 또는 예약 전송

- 다양한 메시지 타겟팅 : 단일 기기, 그룹,주제 별로 가능

- 발송 메시지 저장,관리: 알림 내용,상태, 플랫폼, 최종 전송 시간 ,열람율 관리

 

 

결과물)