¿Es posible enviar notifications push iOS a dos aplicaciones diferentes?

Estoy en una situación en la que tengo un server que necesita enviar notificación push a dos aplicaciones de cliente diferentes sin saber qué aplicación es.

Tengo dos aplicaciones iOS diferentes (2 identificadores de package diferentes) y tengo 2 sets diferentes de todas las certificaciones necesarias, una para cada aplicación.

Tengo un código PHP que recibe el deviceToken y el post que se debe enviar. el código se basa en SimplePush de reywenderlich que se puede encontrar aquí: http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

La única parte que debe cambiar es el file ck.pem que será diferente para cada aplicación.

Una solución que puedo pensar sería probar los dos files ck.pem diferentes, si uno falla pruebe el otro.

¿Alguien puede ayudarme con la implementación de este código PHP? o si hay alguna sugerencia de solución mejor?

<?php // Put your device token here (without spaces): //$deviceToken = 'a6a543b5b19ef7b997b2328'; $deviceToken = $_GET["device_token"]; $message = $_GET["message"]; $elementID = $_GET["element_ID"]; // Put your private key's passphrase here: $passphrase = '123456'; // Put your alert message here: //$message = 'My first push notification! yay'; //////////////////////////////////////////////////////////////////////////////// $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); // Open a connection to the APNS server $fp = stream_socket_client( 'ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) exit("Failed to connect: $err $errstr" . PHP_EOL); echo 'Connected to APNS' . PHP_EOL; // Create the payload body $body['aps'] = array( 'alert' => $message, 'sound' => 'default' ); // Create the extra data $body['extra'] = array( 'element_id' => $elementID ); // Encode the payload as JSON $payload = json_encode($body); // Build the binary notification $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; // Send it to the server $result = fwrite($fp, $msg, strlen($msg)); if (!$result) echo 'Message not delivenetworking' . PHP_EOL; else echo 'Message successfully delivenetworking' . PHP_EOL; // Close the connection to the server fclose($fp); 

ACTUALIZAR:

la solución es agregar otra pieza de código al final, para enviar la misma carga útil al segundo server:

 //connecting to second server $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'SecondCk.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); // Open a connection to the APNS server $fp = stream_socket_client( 'ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) exit("Failed to connect to note server: $err $errstr" . PHP_EOL); // connected to server sending note msg $result = fwrite($fp, $msg, strlen($msg)); if (!$result) echo 'Message not delivenetworking' . PHP_EOL; else echo 'Message successfully delivenetworking' . PHP_EOL; // Close the connection to the server fclose($fp); 

No sé cómo hacer esto en PHP, pero simplemente debes crear la notificación payload body + binary antes de abrir la primera connection y luego crear 2 conexiones (o enlazar una connection, si es posible) al server Push de Apple y enviar el mismo notificación binaria a ambos.

Atentamente,
Gabriel Tomitsuka