You can do it using something like pyAPNs for iOS devices and python-gcm 
for android ones. I actually did it a while ago, and while it worked, I do 
not recommend it as I faced many problems in the beginning, and I would 
follow Anthony's suggestion nowadays. I will give you my code using these 
modules, in case you really don't want to use an outside service.

db.define_table('push_devices',
    Field('platform'),
    Field('device_id_or_token')
)


def push_send(msg):
    """
    Send a simple msg 
    """
    from apns import APNs, Payload
    import os
    import socket


    appdir = request.folder
    ios_devices = [ios.device_id_or_token for ios in 
db(db.push_devices.platform 
== 'ios').select(db.push_devices.device_id_or_token)]
    key = os.path.join(appdir, 'YOUR_KEY_FILE.pem')
    cert = os.path.join(appdir, 'YOUR_CERT_FILE.pem')
    apns = APNs(use_sandbox=False, cert_file=cert, key_file=key)
    payload = Payload(alert=msg)
    
    for device in ios_devices:
        try:
            apns.gateway_server.send_notification(device, payload)
        except socket.error as e:
            # Most likely cause of a broken pipe or this token being 
invalid! (maybe the user uninstalled)
            apns = APNs(use_sandbox=False, cert_file=cert, key_file=key)
            logger.debug('SOCKET ERROR - ' + str(e.errno) + ' deleting ' + 
device)
            db((db.push_devices.platform == 'ios') & 
(db.push_devices.device_id_or_token 
== device)).delete()
            continue

    from gcm import GCM
    gcm = GCM('YOUR_GOOGLE_SERVER_API_KEY')  # Google Server API key
    android_devices = [android.device_id_or_token for android in db(db.
push_devices.platform == 'android').select(db.push_devices.
device_id_or_token)]
    len_android = len(android_devices)
    while android_devices:
         tosend, android_devices = android_devices[:1000], android_devices[
1000:] 
         gcm.json_request(registration_ids=tosend, data={'message': msg})


    return (len_android + len(ios_devices))





-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to