Skip to main content

subscribe to GCM/FCM and receive notifications

Project description

subscribe to GCM/FCM and receive notifications

python implementation of https://github.com/MatthieuLemoine/push-receiver

tested on python 2.7.16, 3.4.10 and 3.7.5

I put this together in a day or so, it’s still rough around the edges, especially the listen part, which I don’t really use myself and have just implemented for fun and only briefly tested

note that for the listening part I had to pull in http-ece which depends on a full blown native crypto library rather than just oscrypto. it is an optional dependency so you’ll have to install it explicitly by depending on push_receiver[listen]

usage

pip install push_receiver[listen,example]

basic usage example that stores and loads credentials and persistent ids and prints new notifications

you can also run this example with this command (change the sender id)

python -m "push_receiver" --sender-id=722915550290
from push_receiver import register, listen
import json


def on_notification(obj, notification, data_message):
  idstr = data_message.persistent_id + "\n"

  # check if we already received the notification
  with open("persistent_ids.txt", "r") as f:
    if idstr in f:
      return

  # new notification, store id so we don't read it again
  with open("persistent_ids.txt", "a") as f:
    f.write(idstr)

  # print notification
  n = notification["notification"]
  text = n["title"]
  if n["body"]:
    text += ": " + n["body"]
  print(text)


if __name__ == "__main__":
  SENDER_ID = 722915550290  # change this to your sender id

  try:
    # already registered, load previous credentials
    with open("credentials.json", "r") as f:
      credentials = json.load(f)

  except FileNotFoundError:
    # first time, register and store credentials
    credentials = register(sender_id=SENDER_ID)
    with open("credentials.json", "w") as f:
      json.dump(credentials, f)

  print("send notifications to {}".format(credentials["fcm"]["token"]))

  with open("persistent_ids.txt", "a+") as f:
    received_persistent_ids = [x.strip() for x in f]

  listen(credentials, on_notification, received_persistent_ids)

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_receiver-0.1.1.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

push_receiver-0.1.1-py2.py3-none-any.whl (17.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file push_receiver-0.1.1.tar.gz.

File metadata

  • Download URL: push_receiver-0.1.1.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for push_receiver-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4e49e6adadfd41f03e3a0ad1c732832db90fb9c5bcce0747ab3e451909f360ec
MD5 902578ea5bee2f74767a3477fe6746ee
BLAKE2b-256 75983722c171b49980f33291e6f83ffd7224c30bbe06419501a4c180ad4ec736

See more details on using hashes here.

File details

Details for the file push_receiver-0.1.1-py2.py3-none-any.whl.

File metadata

  • Download URL: push_receiver-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 17.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for push_receiver-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b16eebb79a04cf2e85ade8208df909566abded4095bae9936cefad87321a3fcd
MD5 3786dc37096c2e461abc0fe140819b64
BLAKE2b-256 f27da3c15baccf427796f517f18427bc084aabf61dc82b3915ea226461d26de7

See more details on using hashes here.

Supported by

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