que notificaciones direct apple apns php iphone push-notification apple-push-notifications

notificaciones - Error de lectura de la notificación push mejorada de Apple con PHP



notificaciones push iphone (1)

Tengo una solución para esto.

Solución:

$read = array($this->_apnsConnection); $null = null; $changedStreams = stream_select($read, $null, $null, 0, 1000000); if ($changedStreams === false) { $this->_log("Error: Unabled to wait for a stream availability"); } elseif ($changedStreams > 0) { $responseBinary = fread($this->_apnsConnection, 6); if ($responseBinary !== false || strlen($responseBinary) == 6) { $response = unpack(''Ccommand/Cstatus_code/Nidentifier'', $responseBinary); $this->_log($response); } }

Estoy tratando de desencadenar un error para poder construir el registro de errores para APNS. Por lo tanto estoy enviando una carga útil demasiado grande al servidor. Pero no obtengo ningún error.

Código:

Conectando:

$streamContext = stream_context_create(); stream_context_set_option($streamContext, ''ssl'', ''local_cert'', $this->_sslPem); stream_context_set_option($streamContext, ''ssl'', ''passphrase'', ""); $this->_apnsConnection = stream_socket_client("ssl://" . Config::$apns[''host''] . ":" . Config::$apns[''port''], $error, $errorString, $timeout, STREAM_CLIENT_CONNECT, $streamContext); if ($this->_apnsConnection) { stream_set_blocking($this->_apnsConnection, 0); }

Envío de notificación:

$this->_log("Sending notification to device token ''$deviceToken''"); $identifiers = array(); for ($i = 0; $i < 4; $i++) { $identifiers[$i] = rand(1, 100); } $apnsMessage = chr(1) . chr($identifiers[0]) . chr($identifiers[1]) . chr($identifiers[2]) . chr($identifiers[3]) . pack(''N'', time() + 3600) . chr(0) . chr(32) . pack(''H*'', str_replace('' '', '''', $deviceToken)) . chr(0) . chr(strlen($message)) . $message; $bytes = fwrite($this->_apnsConnection, $apnsMessage); $this->_log("bytes written: $bytes"); $this->_log("Fetching response"); $response = fread($this->_apnsConnection, 6); $this->_log("Strlen: " . strlen($response)); if ($response === false || strlen($response) != 6) { $this->_log("No response..."); } else { $responseArray = unpack(''Ccommand/CstatusCode/Nidentifier'', $response); $this->_log("Response!"); $this->_log($responseArray); }

Salida:

2011-07-12 16:25:55: Sending notification to device token ''XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX'' 2011-07-12 16:25:55: bytes written: 438 2011-07-12 16:25:55: Fetching response 2011-07-12 16:25:55: Strlen: 0 2011-07-12 16:25:55: No response...