Firebase Admin SDK를 사용한 Push 알림

개시하다


Firebase Cloud Messageing(FCM)을 이용해 서버에서 스마트폰으로Push를 알리려 한다.Firebase를 통해 서버에서 Push 알림을 보내는 방법을 씁니다.구체적으로 말하면 아래 그림의 빨간 상자의 범위다.

컨디션

  • Python 3.7.3
  • 차리다


    설치 - Frebase Admin SDK

    $ pip install firebase-admin
    

  • Firebase concel에서 연결할 키 파일을 가져옵니다.
  • 다음 그림과 같이 Firebase concel 왼쪽 위에 있는 기어 마커를 눌러 항목 설정 화면을 엽니다.
  • 이 화면에서'서비스 계정'옵션을 클릭한다.
  • [새 비밀 키 생성] 버튼을 누르면 비밀 키 파일이 다운로드됩니다.


  • 특정 스마트폰 Push 알림


    특정 스마트폰(YOUR REGISTRATION TOKYEN)에 푸시 알림을 보낸다.
    코드는 다음과 같습니다.path/to/serviceAccountKey.json 다운로드한 개인 키 파일을 지정합니다.
    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import messaging
    
    cred = credentials.Certificate("path/to/serviceAccountKey.json")
    firebase_admin.initialize_app(cred)
    
    # This registration token comes from the client FCM SDKs.
    registration_token = 'YOUR_REGISTRATION_TOKEN'
    
    # See documentation on defining a message payload.
    message = messaging.Message(
        notification=messaging.Notification(
            title='test server',
            body='test server message',
        ),
        token=registration_token,
    )
    
    # Send a message to the device corresponding to the provided
    # registration token.
    response = messaging.send(message)
    # Response is a message ID string.
    print('Successfully sent message:', response)
    
    YOUR_REGISTRATION_TOKENios의 경우 아래의 SWFT 코드를 사용하여 얻은 모든 단말기의 영패(result.token)입니다.
    InstanceID.instanceID().instanceID { (result, error) in
        if let error = error {
            print("Error fetching remote instance ID: \(error)")
        } else if let result = result {
            print("Remote instance ID token: \(result.token)")
            self.instanceID.text  = "Remote InstanceID token: \(result.token)"
        }
    }
    

    Push 알림 참여 핸드폰


    특정 이슈에 참여한 여러 스마트폰에 퍼시를 알리는 방법이다.
    예를 들어'weather'이슈에 참여한 스마트폰에 Push를 알릴 때
    다음은 메시지의 생성 부분을 변경합니다.
    구체적으로 token분만 topic로 변경했다.
    message = messaging.Message(
        notification=messaging.Notification(
            title='test server',
            body='test server message',
        ),
        topic='weather',
    )
    
    다음 코드를 통해ios에서 화제에 참여할 수 있습니다.
    Messaging.messaging().subscribe(toTopic: "weather") { error in
        print("Subscribed to weather topic")
    }
    

    참고 문헌

  • 서버에 Firebase Admin SDK 추가(공식)
  • 응용 서버 생성 요청 (공식)
  • 좋은 웹페이지 즐겨찾기