[Swift] Remote Notification 푸시 알림

이상현·2024년 6월 14일
1

Swift

목록 보기
8/10
post-thumbnail

미완성인 글입니다.

목차

  1. 개념 정리
    공식 문서와 영상을 기반으로 개념을 간단하게 정리
  2. 구현 준비 (작성 예정)
    개념을 기반으로 어떻게 구현할지 정하기
  3. 구현 (작성 예정)
    예시 프로젝트로 구현하기

개념

User Notification

iOS 에서 알림에는 크게 두 종류가 있다.

  1. Local notifications
    앱이 시간이나 장소 같은 상태가 알림을 생성한다.

  2. Remote notifications
    서버가 푸시 알림을 발생하고, Apple Push Notification service (APNs) 가 알림을 사용자 기기에 전송한다.

이 글은 Remote notifications (= 푸시 알림 = 원격 알림)에 대한 내용을 다룹니다.

로컬 알림, 알림 허용, PushKit, HIG 등 다른 내용은 다루지 않습니다.

원격 알림 서버 세팅하기

푸시 알림 전달에는 다음와 같은 주요 구성 요소가 있다.

  • provider server: 나의 서버
    유저의 기기에서 알림을 처리하려면 개발자가 별도의 서버를 설정해야 한다.

  • Apple Push Notification service (APNs)

  • 유저 기기

  • 유저 기기에서 작동하는 앱

나의 서버에서 어떤 알림을 언제 전송할 것인지 결정되면, 알림 데이터와 고유 식별자를 가진 Request 를 생성해야 한다. 그 요청을 APNs 에게 전송하면 APNs 는 유저의 기기에 알림을 전송한다.

푸시 알림을 위한 인프라 구축

원격 알림 서버 설정에는 다음과 같은 주요 작업이 필요하다.

  • 사용자 기기에서 실행중인 앱 인스턴스에서 디바이스 토큰을 수신하고, 해당 토큰을 사용자 계정과 연결하는 코드를 작성한다.
    Registering Your App With APNs

  • 사용자에게 알림을 보낼 시기를 결정하고, 알림 페이로드를 생성하는 코드 작성.
    Generating a remote notification

  1. 원격 알림은 JSON 형식의 페이로드를 운반한다. (최대 4KB)

APNs 에 대한 신뢰할 수 있는 연결 설정

서버와 APNs 간의 통신은 보안 연결을 통해 이루어져야 한다. 그러기 위해선 각 서버에 AAA 인증서 서비스 루트 인증서를 설치해야 한다.

알림을 보내려면 서버가 HTTP/2, TLS 를 사용하여 token-based (.p8) 또는 certificate-based (.p12) 를 설정해야 한다. 두 기술중에 적합한 기술을 선택해야 한다.

APN이 제공하는 서비스

APN 은 사용자 기기에 대한 인증되고 암호화된 영구 IP 연결을 관리한다.
또한 오프라인 상태인 기기에 대한 알림을 저장하고 기기가 온라인 상태가 되면 저장된 알림을 전달한다.
또, 푸시 알림을 테스트 할 수 있다.
WWDC 2023 - 푸시 알림 콘솔 알아보기 참고

구현 준비

Provider Server

알람을 보낼 시기를 결정하고, 전송하려면 Provider Server 가 필요하다.

직접 알림 전송 기능을 하는 백엔드 서버를 구현하거나, 메세징 기능을 제공하는 AWS SNS, Firebase FCM 등을 사용하면 된다.

  • FCM: Firebase Cloud Messaging

일반적으로 많이 사용하는 방법은 FCM (Firebase Cloud Messaging) 이다.
다른 서비스를 AWS 로 다 사용한다고 해도 알림 전송 기능 만큼은 FCM을 주로 사용한다.
그러므로 FCM을 사용하여 구현하기로 했다.

구현

WWDC 2020 - The Push notifications primer
Youtube - Swift: Push Notifications Tutorial (2024) – iOS Development

0개의 댓글