본문 바로가기
앱 제작/키워드 알림 앱

[파이썬] FCM을 통해 앱으로 푸시알림 보내기

by Kim Juhwan 2021. 1. 4.

1. 준비물
   1-1. pyfcm 설치
   1-2. Server Key
   1-3. Token
2. 푸시 알림 보내는 방법
   1-1. 1명에게 보내기
   1-2. 여러 명에게 보내기

 

 


 

1. 준비물

1-1. pyfcm 설치

Pycharm 실행 - File - Settings - Project: pythonProject - Python interpreter - 우측 상단 '+' 클릭

 

커맨드에서 "pip install pyfcm"을 입력해서 라이브러리를 설치해도 되지만

평소에 이 방식대로 하면 오류가 자주 발생해서

번거롭지만 이렇게 설치하는 것을 추천한다.

Pycharm 프로그램 기준으로 위 경로대로 클릭한다.

 

 

'pyfcm' 검색 - install Package

 

그다음 이름을 검색하고 설치해주면 끝이다.

 

 

 

1-2. Server Key

파이어베이스 콘솔 홈페이지 - 프로젝트 개요 - 설정 - 프로젝트 설정

 

파이어 베이스 서버 키를 얻기 위해서 위 경로대로 클릭한다.

만약 아직 파이어베이스 연동을 하지 않았다면

아래 링크를 보고 따라하면 된다.

 

[Kotlin] FCM 푸시 알림 구현하기

1. 기본개념  1-1. Firebase  1-2. FCM(Firebase Cloud Messaging)  1-3. Notification과 Data  1-4. 푸시 알림 전송 대상 2. Firebase 연동  2-1. Firebase와 app 연결  2-2. FCM 추가  2-3. 메시지 처리..

todaycode.tistory.com

 

 

클라우드 메시징 - 서버 키

 

그러면 위 사진처럼 서버 키라고 적혀있는 부분이 있을 것이다.

영어와 숫자의 조합으로 이루어진 매우 긴 값이고, 이 값은 유출되지 않도록 주의해야 한다!

 

 

 

1-3. Token

안드로이드 소스
    override fun onNewToken(token: String?) {
        Log.d(TAG, "new Token: $token")
 
        // 토큰 값을 따로 저장해둔다.
        val pref = this.getSharedPreferences("token", Context.MODE_PRIVATE)
        val editor = pref.edit()
        editor.putString("token", token).apply()
        editor.commit()
 
        Log.i("로그: ", "성공적으로 토큰을 저장함")
    }

토큰은 안드로이드 스튜디오에서 onNewToken 메서드를 통해서 얻을 수 있다.

토큰에 대한 설명과 보다 더 자세한 설명은 1-2에서 링크한 게시물에 있다.

 

 

 

2. 푸시 알림 보내는 방법

1-1. 1명에게 보내기

파이썬 소스
from pyfcm import FCMNotification

APIKEY = "Your Server Key"
TOKEN = "Your Token"

# 파이어베이스 콘솔에서 얻어 온 서버 키를 넣어 줌
push_service = FCMNotification(APIKEY)

def sendMessage(body, title):
    # 메시지 (data 타입)
    data_message = {
        "body": body,
        "title": title
    }

    # 토큰값을 이용해 1명에게 푸시알림을 전송함
    result = push_service.single_device_data_message(registration_id=TOKEN, data_message=data_message)

    # 전송 결과 출력
    print(result)

sendMessage("배달의 민족", "치킨 8000원 쿠폰 도착!")

코드는 정말 간단하다.

data 타입의 메시지에 내용을 넣고

single_device_data_message 메서드에 토큰과 메시지를 넣어주면 된다.

이 메서드는 실행 결과를 리턴하는데, 그걸 result에 담아서 출력해 준 것이다.

 

 

 

치킨 먹고 싶다.

이렇게 푸시 알림이 왔다면 성공이다.

 

 

 

1-2. 여러 명에게 보내기

파이썬 소스
from pyfcm import FCMNotification

APIKEY = "Your Server Key"

# 파이어베이스 콘솔에서 얻어 온 서버 키를 넣어 줌
push_service = FCMNotification(APIKEY)

def sendMessage(body, title):
    # 메시지 (data 타입)
    data_message = {
        "body": body,
        "title": title
    }

    # topic을 이용해 다수의 구독자에게 푸시알림을 전송함
    # 버전에 따라 사용 방법이 다를 수 있으니 공식문서 확인 필수
    result = push_service.notify_topic_subscribers(topic_name="chicken", data_message=data_message)

    # 전송 결과 출력
    print(result)

sendMessage("배달의 민족", "치킨 8000원 쿠폰 도착!")

이 방법은 토큰 값이 필요 없다.

마치 내 유튜브 채널을 구독한 사람들한테 알림을 보내듯이

어떤 주제를 구독한 사람들에게 알림을 보내는 방식이기 때문이다.

위 예시에서는 'chicken' 이란 키워드를 등록한 사람들에게 알림을 보내는 예시이다.

1명에게 보내는 예시와 다른 것은 notify_topic_subscribers 메서드를 사용했다는 점뿐이다.

 

2022-07-02)

버전에 따라 FCM 전송 방법이 조금씩 다를 수 있습니다.

공식문서를 참고해주세요.

제보해주신 JJa08111님 감사합니다 😄

 

 

 

단, 이 메서드는 한글을 주제로 구독을 할 수 없는데

만약 꼭 한글을 사용해야겠다 하면 아래 링크를 참고하면 된다.

 

subscribeToTopic 한글을 주제로 구독하기 :: 푸시알림 구독 서비스 구현

1. subscribeToTopic 메서드  1-1. 개념  1-2. 사용법  1-3. 문제점  1-4. 해결방안 1. subscribeToTopic 메서드 1-1. 개념 푸시 알림을 보내는 방법에는 여러 가지가 있다. 그중 하나가 어떠한 주제를 구독..

todaycode.tistory.com

파이썬에서 푸시알림을 보내주었다면

이제 안드로이드에서 그걸 받아 처리할 차례이다.

아래 게시물에 자세히 적어두었다.

 

[Kotlin] FCM 푸시 알림 구현하기

1. 기본개념  1-1. Firebase  1-2. FCM(Firebase Cloud Messaging)  1-3. Notification과 Data  1-4. 푸시 알림 전송 대상 2. Firebase 연동  2-1. Firebase와 app 연결  2-2. FCM 추가  2-3. 메시지 처리..

todaycode.tistory.com

 

 


Android 10

Python Version : 3.8

Pycharm Version : 2020.2.2 (Community Edition)

반응형

댓글