# Welcome to python-ring-doorbell’s documentation!

## Firebase Messaging

A library to subscribe to GCM/FCM and receive notifications within a python application.

### When should I use firebase-messaging ?

- I want to receive push notifications sent using Firebase Cloud Messaging in a python application.

### When should I not use firebase-messaging ?

- I want to send push notifications (use the firebase SDK instead)

- My application is running on a FCM supported platform (Android, iOS, Web).

### Install

PyPi:

    $ pip install firebase-messaging

### Requirements

- Firebase configuration to receive notifications

### Usage

Must be run inside an asyncio event loop.

python:

    from firebase_messaging import FcmPushClient, FcmRegisterConfig

    def on_notification(obj, notification, data_message):
        # Do something with the notification
        pass

    credentials = None  # Start off with none or load from previous save
    def on_credentials_updated(creds):
        # save the credentials to a file here for future use

    fcm_config = FcmRegisterConfig(fcm-project-id, fcm-app-id, fcm-api-key, fcm-message-sender-id)
    pc = FcmPushClient(on_notification, fcm_config, credentials, on_credentials_updated)
    fcm_token = await pc.checkin_or_register()

    await pc.start()

    # Adapt the following for your usage
    while some_condition_to_keep_listening:
        asyncio.sleep(2)

### Attribution

Code originally based on typescript/node implementation by Matthieu Lemoine. See this blog post for more details.

Converted to python by lolisamurai

http decryption logic in decrypt.py by Martin Thomson