2010-02-18 12 views
7

Estoy tratando de agregar notificaciones automáticas a mi aplicación. Estoy usando un perfil ad hoc. Mi ID de aplicación no tiene un comodín. Estoy utilizando el siguiente código php ...Apple Push Notification Service APNS - Notificaciones que no llegan

$deviceToken="****";masked 
$time = time(); 

$apnsHost = 'gateway.sandbox.push.apple.com'; 

$apnsPort = 2195; 
$apnsCert = 'apns-dev-maui.pem'; 

$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) 
{ 
echo "Connection Established<br/>"; 
$payload = array(); 
$payload['aps'] = array('alert' => 'It works!!', 'badge' => 1, 'sound' => 'default'); 
$payload = json_encode($payload); 
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload; 

     print "sending message :" . $apnsMessage . "<br/>"; 
     print "sending payload :" . $payload . "<br/>"; 
     fwrite($apns, $apnsMessage); 

} 
else 
{  
     echo "Connection Failed"; 
     echo $errorString; 
     echo $error; 
} 
// socket_close($apns); 
fclose($apns); 

No hay conexión se generan errores. Nada parece venir del canal de retroalimentación.

Obtuve los DeviceTokens desde la consola del organizador y un comando NSLog. Las notificaciones de esta aplicación se muestran en mi menú de configuración.

Tengo un ATT 3G y un viejo 2G que uso como iPod. Ni trabajo

Sin errores a la vista, me he quedado sin ideas. Alguien tiene alguna idea?

Jennifer

+0

¿Podemos usar dos .pem (archivos de certificación) diferentes para enviar notificaciones push? ¿Es eso posible? –

Respuesta

24

Finalmente lo descubrí. Estaba usando Sandbox con un perfil de aprovisionamiento AdHoc. Ad Hoc aparentemente se considera producción en lugar de desarrollo. Creé el certificado de producción de inserción, lo instalé y ¡listo! Funciona.

+1

Gracias. ¡Estaba a punto de quedar completamente loco! :) –

+1

Mups puede marcar su propia respuesta como correcta, y realmente debería en este caso :) – powerj1984

6

Mups answer is right. Quería agregar una situación de suma que tuviera el mismo problema (en caso de que sea útil para cualquier otra persona). Tenía configuración de inserción y funcionaba exactamente en 1 iphone (no en los demás). Esto fue muy desconcertante. El problema era que el iphone 1 que funcionaba tenía una versión de 'depuración' del programa instalada, donde los otros tenían instalada una versión 'ad hoc'. Nuestro servidor APNS fue configurado para usar el certificado de 'desarrollo' y gateway.sandbox.push.apple.com

Cambié el certificado en el servidor a un certificado de 'producción' y el host a gateway.push.apple.com

(después borrados todos los perfiles de suministro en todos los dispositivos, e instalado la versión 'ad hoc' del programa)

y eran buenos para ir.

Cuestiones relacionadas