Skip to main content

A wrapper library for using firebase-admin-python to send data and notification messages.

Project description

push-den

A wrapper library for sending push notifications through Firebase Cloud Messaging (FCM) and Apple Push Notification service (APNs).

Requirements

  • Python 3.8+

Installation

pip install push-den

For local build/install:

python -m build
pip install dist/push_den-<version>-py3-none-any.whl

Configuration

Create a .env file from .env.example and set the required values.

Minimal runtime configuration in code:

import os
from push_den.processor import NotificationProcessor

fcm_credential_path = os.getenv("FIREBASE_ADMIN_PRIVATE_KEY")

apns = {
    "APNS_AUTH_KEY": os.getenv("APNS_AUTH_KEY"),
    "TEAM_ID": os.getenv("TEAM_ID"),
    "ALGORITHM": os.getenv("ALGORITHM", "ES256"),
    "APNS_KEY_ID": os.getenv("APNS_KEY_ID"),
    "BUNDLE_ID": os.getenv("BUNDLE_ID"),
    "IOS_HTTP_URL": os.getenv("IOS_HTTP_URL", "api.push.apple.com:443"),
    "IOS_HTTP_SANDBOX_URL": os.getenv("IOS_HTTP_SANDBOX_URL"),
}

notification_processor = NotificationProcessor(fcm=fcm_credential_path, apns=apns)

Usage

FCM single notification (single)

payload = {
    "type": "fcm",
    "send_mode": "single",
    "device_token": "<fcm-device-token>",
    "notification": {
        "message_title": "Hello",
        "message_body": "Welcome",
        "priority": "high",
        "ttl": 60,
    },
}

response = notification_processor.process_message(payload)
print(response.message_id, response.success, response.exception)

FCM multicast data message (multiple_data)

payload = {
    "type": "fcm",
    "send_mode": "multiple_data",
    "device_tokens": ["<token-1>", "<token-2>"],
    "notification": {
        "data": {
            "event": "order.created",
            "order_id": "1001",
        },
        "priority": "normal",
        "ttl": 120,
    },
}

response = notification_processor.process_message(payload)
print(response.success_count, response.failure_count)

APNs mutable alert (alert)

payload = {
    "type": "apns",
    "send_mode": "alert",
    "device_token": "<apns-device-token>",
    "notification": {
        "title": "New Message",
        "data": "You have a new notification",
        "ttl": 3600,
    },
}

response = notification_processor.process_message(payload)
print(response.status, response.read().decode("utf-8"))

APNs immutable alert (immutable_alert)

payload = {
    "type": "apns",
    "send_mode": "immutable_alert",
    "device_tokens": ["<token-1>", "<token-2>"],
    "notification": {
        "title": "Account Notice",
        "message_body": "Your profile has been updated.",
        "ttl": 3600,
    },
}

response = notification_processor.process_message(payload)
print(response)

Payload size helpers

You can estimate payload size before sending:

from push_den.notificationfactory.fcm_factory.fcm_notification import FcmNotification
from push_den.notificationfactory.apns_factory.apns_notification import ApnsNotification

fcm_size = FcmNotification.calculate_payload_size(payload)
apns_size = ApnsNotification.calculate_payload_size(payload)

print(fcm_size)
print(apns_size)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

push_den-1.3.3.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

push_den-1.3.3-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file push_den-1.3.3.tar.gz.

File metadata

  • Download URL: push_den-1.3.3.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for push_den-1.3.3.tar.gz
Algorithm Hash digest
SHA256 39c0cb96c47144f750a99d144108d3c2a0cac805e5c37ff98d1bc9fe3a64d2ce
MD5 1e0432a217be9074266dd8b8a013d40b
BLAKE2b-256 4b3f65629a002459c733883d5d10b2ac51c0a2836fa770041147a4bc37026b3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for push_den-1.3.3.tar.gz:

Publisher: python-publish.yml on amtyf/push-den

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file push_den-1.3.3-py3-none-any.whl.

File metadata

  • Download URL: push_den-1.3.3-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for push_den-1.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c8200b914ccda9c8732a565cb6e9e357855a5703d7fc5177da316c8a3720f8ef
MD5 3118b99d15e4aa4a82a7f1d024431021
BLAKE2b-256 79b7cadd789842f9b0b42e4a9aa45b95891a55218a7c4e4522beeea73aa39903

See more details on using hashes here.

Provenance

The following attestation bundles were made for push_den-1.3.3-py3-none-any.whl:

Publisher: python-publish.yml on amtyf/push-den

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page