[python] FastAPI에서 모바일 푸시 알림 구현하기

FastAPI는 Python으로 빠르게 웹 애플리케이션을 구축하기 위한 고성능 웹 프레임워크입니다. 이번 포스트에서는 FastAPI를 사용하여 모바일 푸시 알림을 구현하는 방법에 대해 알아보겠습니다.

FCM (Firebase Cloud Messaging) 설정

FCM은 구글에서 제공하는 모바일 푸시 알림 서비스입니다. 먼저 FCM을 사용하기 위해 Firebase 프로젝트를 생성하고 FCM 설정을 해야합니다. Firebase 콘솔로 이동하여 프로젝트를 생성하고, 애플리케이션을 등록한 후, FCM 설정에서 서버 키를 발급받아야 합니다.

FCM 서버 키 설정

Firebase 콘솔에서 생성한 프로젝트로 이동한 후, 프로젝트 설정 탭으로 이동합니다. 클라우드 메시징 섹션에서 서버 키를 생성합니다. 이 서버 키는 FastAPI 서버가 FCM 서버와 통신하는 데 사용됩니다.

FastAPI 프로젝트 설정

FastAPI 프로젝트에서 모바일 푸시 알림을 구현하기 위해 아래와 같은 패키지들을 설치해야 합니다.

pip install fastapi
pip install pyfcm

모바일 푸시 알림 라우터 생성

FastAPI 프로젝트에 모바일 푸시 알림을 위한 라우터를 생성합니다. main.py 파일에 아래와 같이 작성합니다.

from fastapi import FastAPI
from pyfcm import FCMNotification

app = FastAPI()

# FCM 서버 키
fcm_server_key = "YOUR_FCM_SERVER_KEY"

# FCM 클라이언트 인스턴스 생성
fcm_client = FCMNotification(api_key=fcm_server_key)

@app.post("/send_notification")
def send_notification(device_token: str, title: str, body: str):
    message = {
        "registration_ids": [device_token],
        "notification": {
            "title": title,
            "body": body
        }
    }

    response = fcm_client.notify_multiple_devices(data_message=message)
    return response

위 코드에서는 FastAPI에서 /send_notification 엔드포인트를 생성하여 모바일 푸시 알림을 보낼 수 있습니다. device_token, title, body는 모바일 장치의 토큰, 푸시 알림의 제목과 내용을 나타냅니다.

모바일 애플리케이션에서 푸시 알림 수신

FastAPI 서버에서 모바일 푸시 알림을 보내기 위해 사용자의 디바이스 토큰이 필요합니다. 이 토큰은 모바일 애플리케이션에서 얻을 수 있습니다.

Android에서 토큰 얻기

Android 애플리케이션에서 FCM 토큰을 얻으려면 Firebase 메시징을 사용해야합니다. 아래 코드를 참고하여 토큰을 얻을 수 있습니다.

FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val token = task.result
        // TODO: 토큰 사용
    } else {
        // 토큰 얻기 실패
    }
}

iOS에서 토큰 얻기

iOS에서는 APNs(Apple Push Notification service)를 사용하여 FCM 토큰을 얻습니다. 아래 코드를 참고하여 토큰을 얻을 수 있습니다.

if let token = Messaging.messaging().fcmToken {
    // TODO: 토큰 사용
} else {
    // 토큰 얻기 실패
}

위 방법을 사용하여 토큰을 얻은 후, FastAPI 서버의 /send_notification 엔드포인트에 토큰과 푸시 알림의 제목, 내용을 전송하면 모바일 푸시 알림을 수신할 수 있습니다.

결론

이번 포스트에서는 FastAPI를 사용하여 모바일 푸시 알림을 구현하는 방법을 간단히 알아보았습니다. FastAPI의 강력한 기능을 활용하여 모바일 푸시 알림을 손쉽게 구현할 수 있으며, Firebase의 FCM 서비스를 통해 안정적인 푸시 알림을 전송할 수 있습니다.