This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Client library for APNs Proxy Server.

Project Description

Client program of APNs Proxy Server

Installation

pip install apns-proxy-client

How to Use

from apns_proxy_client import APNSProxyClient

client = APNSProxyClient(host="localhost", port=5556, application_id="myapp")
with client:
    # send "Hello" alerts to many tokens
    for token in many_tokens:
        client.send(token, 'Hello', badge=1)

    # get disabled device tokens from feedback service
    feedback = client.get_feedback()

OR use connect() and close() instead of with

from apns_proxy_client import APNSProxyClient

client = APNSProxyClient(host="localhost", port=5556, application_id="myapp")
client.connect()
# send "Hello" alerts to many tokens
for token in many_tokens:
    client.send(token, 'Hello')

# get disabled device tokens from feedback service
feedback = client.get_feedback()
client.close()

Set host and port for your server running on. application_id is specified in settings.py on apns-proxy-server.

send() method synopsis

token = "YOUR_VALID_DEVICE_TOKEN"

client = APNSProxyClient(host="localhost", port=5556, application_id="myapp")
with client:
    # Simple
    client.send(token, 'Hello')

    # Custom sound (default = 'default')
    client.send(token, 'Alert with custom sound', sound='custom')

    # Message without sound
    client.send(token, 'I am silent', sound=None)

    # Badge
    client.send(token, 'Alert with badge', badge=2)

    # Change badge silently
    client.send(token, None, sound=None, badge=9999)

    # Set expiry (default = 1hour)
    four_hours_later = int(time.time()) + (60 * 60 * 4)
    client.send(token, 'I am long life', expiry=four_hours_later)

    # Set priority (default = 10)
    client.send(token, 'I am low priority', priority=5)

    # For background fetch
    client.send(token, None, sound=None, content_available=True)

    # With custom field.
    client.send(token, 'With custom field', custom={
        'foo': True,
        'bar': [200, 300],
        'boo': "Hello"
    })
    # Finally following payload will send to APNs
    # {
    #     "aps": {
    #         "alert": "With custom field",
    #         "sound": "default",
    #      },
    #      "foo": True,
    #      "bar": [200, 300],
    #      "boo": "Hello"
    #}

    # Use JSON Payload
    client.send(token, {
        'body': 'This is JSON alert',
        'action_loc_key': None,
        'loc_key': 'loc key',
        'loc_args': ['one', 'two'],
        'launch_image': 'aa.png'
    })

    # All
    client.send(token, 'Many opts', sound='foo', badge=2, content_available=True,
                custom={"bar": "boo"}, expiry=four_hour_later, priority=5)

    # Test. APNsProxyServer don't send to APNs
    client.send(token, 'This message never send to device', test=True)

Parameters of send method

Name Type Required Default Value (Set on server)
token string yes
alert string, unicode or dict yes
sound string no ‘default’
badge number no None
content_available bool no False
custom dict no None
expiry date no 1 hour
priority number no 10
test bool no False

get_feedback() method synopsis

This client library provides a way to get disabled device tokens from APNs feedback service; just call get_feedback() without any parameters.

get_feedback() returns the dict that is a pair of “device_token” and “timestamp”.

Name Type Description
device_token string The device token string which cannot be received push notifications
timestamp float The seconds since 00:00 on January 1, 1970 UTC. This value means a timestamp which APNs judged the device token should be disabled.
client = APNSProxyClient(host="localhost", port=5556, application_id="myapp")
with client:
    feedback = client.get_feedback()
    # a value of feedback likes the following dict:
    #   {
    #       "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef": 1399442843.0,  # device_token : unix timestamp
    #       "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789": 1399442892.0,
    #   }

For contributor

Makefile provides some useful commands.

Command Description
make setup Setup work directory
make lint Code check using flake8
make test Run tests

License

BSD

Release History

Release History

This version
History Node

0.1.0

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
apns-proxy-client-0.1.0.tar.gz (6.4 kB) Copy SHA256 Checksum SHA256 Source May 12, 2014

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting