This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
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

0.1.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

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 HPE HPE Development 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