Skip to main content

Client library for APNs Proxy Server.

Project description

Client program of APNs Proxy Server

Build Status

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

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

apns-proxy-client-0.1.0.tar.gz (6.4 kB view details)

Uploaded Source

File details

Details for the file apns-proxy-client-0.1.0.tar.gz.

File metadata

File hashes

Hashes for apns-proxy-client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d2056b7ae8789f8a95072960c41fa0d13d8c14c77c7bed3198ee09e2584b5309
MD5 8c91241268a45702a8defa2266af24e9
BLAKE2b-256 4e39c762362f082629bba9e50445c04e71cf38f76f49e61cc3b11067309b8a33

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