notificación de inserción de Apple – PHP

Tengo un problema cuando uso la notificación push, funciona cuando uso el desarrollo, pero cuando quiero utilizarlo de verdad, no funcionará.

El ck está hecho para producción.

Cuando lo uso, el resultado es: Message successfully delivenetworking enviado con Message successfully delivenetworking Pero mi teléfono no recibe el post

 <?php pushNotification('wow2','DeviceToken'); function pushNotification($theMessage, $theDeviceToken) { // Put your device token here (without spaces): $deviceToken = $theDeviceToken; // Put your private key's passphrase here: $passphrase = 'Code'; // Put your alert message here: $message = $theMessage; //////////////////////////////////////////////////////////////////////////////// $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); exit("" . PHP_EOL); //echo 'Connected to APNS\n' . PHP_EOL; // Create the payload body $body['aps'] = array( 'alert' => $message, 'sound' => 'default' ); // 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; fclose($fp); } ?> 

¿Alguien puede ver lo que está mal? 🙂

Hay tres types de problemas que se enfrentan aquí en APNS

  1. su token de dispositivo no coincide
  2. su .pem no es válido, el motivo es que los files .p12 y .cer se dañan algunas veces, por lo tanto, elimine el file .p12 y .cer y vuelva a crearlo una vez.
  3. no es una respuesta que valga la pena, sino que por casualidad ocurrirá; compruebe que la notificación del dispositivo esté ON/OFF

Creo que es un problema con su token de dispositivo. Si tiene un token de dispositivo no válido en su server, no recibirá la notificación. Una vez que haya eliminado el token de dispositivo no válido de su server, entonces funcionará.

Me pasó lo mismo, y me tomó mucho time encontrar la solución.

Intente con el token del dispositivo Hardcoded del token mobile de su dispositivo.

Después de eso, intente con el token de dispositivo variable o de eco antes de usar.

// Pon tu ficha de dispositivo aquí (sin espacios):

 $deviceToken = '0f744707bebcf74f9b7c25d48e3358945f6aa01da5dd43487462c7eaf61bbad78';