Async Firebase Client - a Python asyncio client to interact with Firebase Cloud Messaging in an easy way.
Project description
async-firebase is a lightweight asynchronous client to interact with Firebase Cloud Messaging for sending push notification to Android and iOS devices
- Free software: MIT license
- Requires: Python 3.6+
Features
- Extremely lightweight and does not rely on
firebase-admin
which is hefty - Send push notifications to Android and iOS devices
- Set TTL (time to live) for notifications
- Set priority for notifications
- Set collapse-key for notifications
- Dry-run mode for testing purpose
Installation
$ pip install async-firebase
Getting started
To send push notification to Android:
import asyncio
from async_firebase import AsyncFirebaseClient
async def main():
client = AsyncFirebaseClient()
client.creds_from_service_account_file("secret-store/mobile-app-79225efac4bb.json")
# or using dictionary object
# client.creds_from_service_account_info({...}})
device_token = "..."
android_config = client.build_android_config(
priority="high"
ttl=2419200,
collapse_key="push",
data={"discount": "15%", "key_1": "value_1", "timestamp": "2021-02-24T12:00:15"},
title="Store Changes"
body="Recent store changes",
)
response = await client.push(device_token=device_token, android=android_config)
print(response)
if __name__ == "__main__":
asyncio.run(main())
To send push notification to iOS:
import asyncio
from async_firebase import AsyncFirebaseClient
async def main():
client = AsyncFirebaseClient()
client.creds_from_service_account_file("secret-store/mobile-app-79225efac4bb.json")
# or using dictionary object
# client.creds_from_service_account_info({...}})
device_token = "..."
apns_config = client.build_apns_config(
priority="normal",
ttl=2419200,
apns_topic="store-updated",
collapse_key="push",
title="Store Changes"
alert="Recent store changes",
badge=1,
category="test-category",
custom_data={"discount": "15%", "key_1": "value_1", "timestamp": "2021-02-24T12:00:15"}
)
response = await client.push(device_token=device_token, apns=apns_config)
print(response)
if __name__ == "__main__":
asyncio.run(main())
This prints:
{"name": "projects/mobile-app/messages/0:2367799010922733%7606eb557606ebff"}
To manual construct message:
from async_firebase.messages import APNSConfig, APNSPayload, ApsAlert, Aps
from async_firebase import AsyncFirebaseClient
async def main():
apns_config = APNSConfig(**{
"headers": {
"apns-expiration": str(int(datetime.utcnow().timestamp()) + 7200),
"apns-priority": "10",
"apns-topic": "test-topic",
"apns-collapse-id": "something",
},
"payload": APNSPayload(**{
"aps": Aps(**{
"alert": ApsAlert(title="some-title", body="alert-message"),
"badge": 0,
"sound": "default",
"content_available": True,
"category": "some-category",
"mutable_content": False,
"custom_data": {
"link": "https://link-to-somewhere.com",
"ticket_id": "YXZ-655512
},
})
})
})
device_token = "..."
client = AsyncFirebaseClient()
client.creds_from_service_account_info({...})
response = await client.push(device_token=device_token, apns=apns_config)
if __name__ == "__main__":
asyncio.run(main())
License
async-firebase
is offered under the MIT license.
Source code
The latest developer version is available in a GitHub repository: https://github.com/healthjoy/async-firebase
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
async-firebase-1.1.0.tar.gz
(11.8 kB
view details)
Built Distribution
File details
Details for the file async-firebase-1.1.0.tar.gz
.
File metadata
- Download URL: async-firebase-1.1.0.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.2 Linux/5.4.0-1040-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d18ab69bc377f1b79bea652b264b2a7d3748d5055aa5e03b58cc2e219c8f41c |
|
MD5 | bd5ae206405fe093e115912d047916af |
|
BLAKE2b-256 | 7abd0f884b8c33b3f257e25f8fe65f5c8d674138b3b128f8ce5750e86a38e711 |
File details
Details for the file async_firebase-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: async_firebase-1.1.0-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.2 Linux/5.4.0-1040-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79272144b6183c07f6e80db4752c5573a408fe8c10046244fcd9d61ff9aebe61 |
|
MD5 | 8358d3b8a8bfbbc89c2509d51492f2c4 |
|
BLAKE2b-256 | 7e364217f79c5f925be5363428e6f8b5238f25d67a8a4613dc2115f4fae2d769 |