see past notification how iphone push-notification

iphone - past - Código de ejemplo de Apple PNS(servicios de notificación push)



push notifications ios swift (10)

¿Hay algún proyecto de muestra que muestre cómo usar APNS en el iPhone y cómo configurarlo? Actualmente estoy mirando la documentación, pero sería bueno tener algún código de trabajo para separar y ver cómo funciona todo junto?

Parece que no puedo encontrar nada usando google o en el centro de desarrollo de iphone.


Aquí hay una versión php5 probada del guión de prueba de jessecurry. Utiliza el '' formato de mensaje mejorado '' e intenta capturar y mostrar los errores de Apple. Esto podría dar una indicación de lo que está mal con tus mensajes.

// Settings $deviceToken = ''xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx''; $apnsCert = ''apns-dev.pem''; $apnsHost = ''gateway.sandbox.push.apple.com''; $apnsPort = 2195; // Prepare payload $payload = array( ''aps'' => array( ''alert'' => ''Hi, this is an alert!'', ''badge'' => 8 ) ); $payload = json_encode($payload); print($payload . "/n"); // Connect to Apple Push Notification server $streamContext = stream_context_create(); stream_context_set_option($streamContext, ''ssl'', ''local_cert'', $apnsCert); $apns = stream_socket_client(''ssl://'' . $apnsHost . '':'' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext); if (!$apns) { die(''Error creating ssl socket''); } // Don''t block on reading from the socket stream_set_blocking ($apns, 0); // Send payload in enhanced message format ( http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW1 ) $apnsMessage = // Command "1" chr(1) // Identifier "88" . pack(''N'', 88) // Expiry "tomorrow" . pack(''N'', time() + 86400) // Token length . chr(0) . chr(32) // Device token . pack(''H*'', str_replace('' '', '''', $deviceToken)) // Payload length . chr(0) . chr(strlen($payload)) // Actual payload . $payload . $payload; fwrite($apns, $apnsMessage); // Pause for half a second to check if there were any errors during the last seconds of sending. usleep(500000); checkAppleErrorResponse($apns); // Close connection -- apple would prefer that we keep // a connection open and push data as needed. fclose($apns); function checkAppleErrorResponse($apns) { $responseBinary = fread($apns, 6); if ($responseBinary !== false && strlen($responseBinary) == 6) { print( "/n" .''Error message recieved from Apple.''."/n" .''For the meaning, refer to: "Provider Communication with Apple Push Notification Service"''."/n" ); $response = unpack(''Ccommand/Cstatus_code/Nidentifier'', $responseBinary); var_dump($response); } }


En caso de que ayude, he escrito una biblioteca de Python, PyAPN, para interactuar con el Servicio de notificación de inserción en el lado del servidor:

github.com/simonwhitaker/PyAPNs


Mire en los foros en el centro de desarrollo de iPhone, supuestamente hay muchos ejemplos de código del lado del servidor para hablar con el servidor de inserción de Apple.


Pruebe el proyecto NWPusher en GitHub. Proporciona aplicaciones OS X e iOS para enviar notificaciones push manualmente, o puede usar la biblioteca Objective-C incluida directamente.


Realmente no hay mucho código para escribir en el lado del iPhone. Necesitas obtener el token único del iPhone o iPod Touch y luego retransmitir ese token a tu servidor. Obtener el token requiere una llamada a UIApplication, pero no hay una forma predefinida de obtenerlo en su servidor. Una de mis aplicaciones realiza un HTTP POST a un script PHP que coloca el token en una base de datos.

Si tiene curiosidad sobre el aprovisionamiento y la configuración de los certificados, etc., puede consultar la Guía de programación del Servicio de notificación push de Apple.


Sé que esta es una pregunta muy antigua y que ha recibido muchas respuestas, pero el tutorial de Rey Wenderlich me pareció muy útil y quería compartirlo con los principiantes de APNS. Es muy útil y muy fácil de entender.

Aclamaciones,

Aditya


Sé que fue tarde, pero debería ver el proyecto MonoPush . Parece que proporcionarán una nueva forma de integración de inserción, así como estadísticas detalladas, incluidas estadísticas sobre el mapa.


Un buen lugar para comenzar es Urban Airship . Puede configurar una cuenta básica gratuita que hará todo el trabajo del lado del servidor para enviar notificaciones automáticas a los servidores de Apple. También hacen un excelente trabajo al guiarlo a través de todos los pasos necesarios para que su aplicación funcione con su servicio, y tienen un excelente código de muestra que muestra cómo registrar su aplicación para notificaciones.

No tengo otra afiliación con ellos aparte de ser un usuario feliz de su servicio.



La peor parte de configurar el servicio de notificación push es el aprovisionamiento. El principal obstáculo con el que me topé fue que hay un certificado y una clave en el archivo .cer que descargó del sitio de Apple, escribí un servicio de sistema en C # que enviaba notificaciones y las conexiones seguían fallando porque había exportado el certificado y no la clave

No recuerdo quién escribió esto originalmente, aquí hay un poco de código en python que me ayudó cuando estaba probando el servicio de notificación. Me gusta porque es muy simple y funciona bien durante las pruebas.

import socket, ssl, json, struct # device token returned when the iPhone application # registers to receive alerts deviceToken = ''XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX'' thePayLoad = { ''aps'': { ''alert'':''Oh no! Server/'s Down!'', ''sound'':''k1DiveAlarm.caf'', ''badge'':42, }, ''test_data'': { ''foo'': ''bar'' }, } # Certificate issued by apple and converted to .pem format with openSSL # Per Apple''s Push Notification Guide (end of chapter 3), first export the cert in p12 format # openssl pkcs12 -in cert.p12 -out cert.pem -nodes # when prompted "Enter Import Password:" hit return # theCertfile = ''cert.pem'' # theHost = ( ''gateway.sandbox.push.apple.com'', 2195 ) # data = json.dumps( thePayLoad ) # Clear out spaces in the device token and convert to hex deviceToken = deviceToken.replace('' '','''') byteToken = bytes.fromhex( deviceToken ) # Python 3 # byteToken = deviceToken.decode(''hex'') # Python 2 theFormat = ''!BH32sH%ds'' % len(data) theNotification = struct.pack( theFormat, 0, 32, byteToken, len(data), data ) # Create our connection using the certfile saved locally ssl_sock = ssl.wrap_socket( socket.socket( socket.AF_INET, socket.SOCK_STREAM ), certfile = theCertfile ) ssl_sock.connect( theHost ) # Write out our data ssl_sock.write( theNotification ) # Close the connection -- apple would prefer that we keep # a connection open and push data as needed. ssl_sock.close()

También hay una gema de rieles llamada apn_on_rails que parece funcionar bastante bien si estás desarrollando una aplicación de rieles, acabo de verla hoy y pude enviar notificaciones desde la consola.

En el lado del iPhone, solo tendrá que llamar al siguiente para registrarse para todos los tipos de notificaciones:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];

Para recibir el token del dispositivo, deberá implementar los siguientes métodos de delegado:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

Durante las pruebas, puede simplemente activar el dispositivo Token en la consola con NSLog, y luego pegarlo en el script de Python anterior; en producción, obviamente tendrá que configurar algún método para obtener el token en sus servidores.

Además, en producción, deberá consultar el servicio de comentarios de Apple y eliminar los tokens de dispositivos de los usuarios que eliminaron su aplicación.