2. 재난 푸시 알림 앱

곰주·2023년 5월 9일
0

재난 푸시 알림 앱

지정된 시간 없이 개발자가 원할 때 원격으로 알림을 띄우는 앱


알아야 할 개념

1. Apple Push Notification Service

Remote Notification(원격 알림)을 이용하기 위해 알아야 하는 개념이다. Remote Notifcation은 서버에서 바로 기기로 알림을 울리지 않고 APNs(Apple Push Notification Service) 를 거쳐야 한다. 왜냐면! APNs가 Provider(앱 서비스 서버)에서 각 기기의 상태를 확인하여 상태에 따라서 알림을 저장 후에 보내 주고, 최신의 알림 상태로 관리해 주기 때문이다. 또, 특정 사람에게 보내려는 알림(데이터)을 다른 사람이 탈취할 수도 있고, 알림이 오염되어 사용자에게 보내게 되는 등의 보안에 관한 것도 관리를 해 준다. 앞서 말한 보안 문제를 해결하기 위해 APNs는 자체 보안 아키텍처를 사용하여 원격 알림을 안전하게 제어할 수 있따! 그리고 이러한 보안 수준을 유지하기 위해 다음과 같은 두 가지의 신뢰 수준을 이용한다.


1-(1) Connection Trust(연결 신뢰)

Provider와 APNs 사이, APNs와 기기 사이에서 작동하는 것이다. 여기서 APNs와 기기 사이의 연결 신뢰는 승인된 장치만 APNs에 연결해서 알림을 받을 수 있는 것이다. Provider와 APNs 신뢰는 애플과 계약한 회사가 소유한 승인된 공급자만 APNs와 연결해서 push 알림을 전달하게 하여 연결 신뢰를 구성한다. 그래서!! 공급자 서버(Provider)는 APNs 간에 연결 신뢰가 있는지 확인해야 하는데, 확인하는 방법은 Token-based, Certificatoin-based가 있다.

Token-based

토큰 기반으로, 유효한 인증키를 이용하여 확인하는 방법

Certification-based

SSL 인증서를 이용하여 확인하는 방법


1-(2) Device Token Trust

각 원격 알림에서 End-To-End로 작동하고, 알림이 올바른 시작(제공자)-끝(장치) 사이에서만 라우팅 되도록 한다. 애플이 특정 장치에 특정 앱에 할당한 고유 식별자를 포함하는 NSData 인스턴스이며, 이 토큰을 누군가 탈취를 해도 해독을 하지 못하고 APNs만 가능하다.

Local Notification의 구성

로컬 알림을 보내려면 로컬 요청인 UNNotificationRequest 작성을 해야 한다. (여기서 UN..! User Notification의 약자)


2. FCM (Firebase Cloud Messaging)

Remote Notification을 손쉽게 관리하고 전송할 수 있는 Firebase의 플랫폼으로, 위에서 설명한 APNs의 보안 요건을 갖춘 서버를 직접 구축하기 힘드므로.. 이녀석을 이용하면 됨. FCM은 Provider의 역할을 대신 해 줌! 그러면 FCM의 역할에 대해 알아부자~

FCM의 역할!

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

2. 다양한 메시지 타겟팅: 단일 기기, 기기 그룹, 주제를 구독한 기기

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



코드는 저의 깃허브를 이용해 주십시옹..

아기코쟁이


실행 결과 화면

profile
아기코쟁이 🧑🏻‍💻

0개의 댓글