Python client for Google Cloud Messaging for Android (GCM)
Project description
Python client for Google Cloud Messaging for Android (GCM)
Installation
pip install python-gcm
Features
Supports multicast message
Resend messages using exponential back-off
Proxy support
Easily handle errors
Uses requests from version > 0.2
Usage
RTFM here
Basic
from gcm import GCM
gcm = GCM(API_KEY)
data = {'param1': 'value1', 'param2': 'value2'}
# Plaintext request
reg_id = '12'
gcm.plaintext_request(registration_id=reg_id, data=data)
# JSON request
reg_ids = ['12', '34', '69']
response = gcm.json_request(registration_ids=reg_ids, data=data)
# Extra arguments
res = gcm.json_request(
registration_ids=reg_ids, data=data,
collapse_key='uptoyou', delay_while_idle=True, time_to_live=3600
)
Error handling
# Plaintext request
reg_id = '12345'
try:
canonical_id = gcm.plaintext_request(registration_id=reg_id, data=data)
if canonical_id:
# Repace reg_id with canonical_id in your database
entry = entity.filter(registration_id=reg_id)
entry.registration_id = canonical_id
entry.save()
except GCMNotRegisteredException:
# Remove this reg_id from database
entity.filter(registration_id=reg_id).delete()
except GCMUnavailableException:
# Resent the message
# JSON request
reg_ids = ['12', '34', '69']
response = gcm.json_request(registration_ids=reg_ids, data=data)
# Handling errors
if 'errors' in response:
for error, reg_ids in response['errors'].items():
# Check for errors and act accordingly
if error in ['NotRegistered', 'InvalidRegistration']:
# Remove reg_ids from database
for reg_id in reg_ids:
entity.filter(registration_id=reg_id).delete()
if 'canonical' in response:
for reg_id, canonical_id in response['canonical'].items():
# Repace reg_id with canonical_id in your database
entry = entity.filter(registration_id=reg_id)
entry.registration_id = canonical_id
entry.save()
Exceptions
Read more on response errors here
GCMMalformedJsonException
GCMConnectionException
GCMAuthenticationException
GCMTooManyRegIdsException
GCMNoCollapseKeyException
GCMInvalidTtlException
GCMMissingRegistrationException
GCMMismatchSenderIdException
GCMNotRegisteredException
GCMMessageTooBigException
GCMInvalidRegistrationException
GCMUnavailableException
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
python-gcm-0.2.tar.gz
(7.2 kB
view hashes)