Cómo conectarse a APN con PHP usando el file de key de authentication P8

Después de que Apple cambió la key de acceso de APN a p8, las bibliotecas actuales, como https://github.com/immobiliare/ApnsPHP, todavía usan files antiguos pem y cert para conectarse

$push = new ApnsPHP_Push( ApnsPHP_Abstract::ENVIRONMENT_SANDBOX, 'server_certificates_bundle_sandbox.pem' ); // Set the Provider Certificate passphrase // $push->setProviderCertificatePassphrase('test'); // Set the Root Certificate Autority to verify the Apple remote peer $push->setRootCertificationAuthority('entrust_root_certification_authority.pem'); // Connect to the Apple Push Notification Service $push->connect() 

Con el ejemplo Node.js ( https://eladnava.com/send-push-notifications-to-ios-devices-using-xcode-8-and-swift-3/ ), podría enviarme así:

 var apnProvider = new apn.Provider({ token: { key: 'APNsAuthKey_Q34DLF6Z6J.p8', // Path to the key p8 file keyId: 'Q34DLF6Z6J', // The Key ID of the p8 file (available at https://developer.apple.com/account/ios/certificate/key) teamId: 'RLAHF6FL89', // The Team ID of your Apple Developer Account (available at https://developer.apple.com/account/#/membership/) }, production: false // Set to true if sending a notification to a production iOS app }); 

¿Cómo puedo usar PHP para enviar notifications remotas a iOS como lo hago en node.js?

Perdón por llegar tan tarde al juego. Si entiendo correctamente tu pregunta, creo que esto es lo que buscas. Esto es lo que uso para enviar posts a Apple APNS usando PHP. Es posible que tenga que hacer alguna investigación sobre la carga útil, ya que hay algunas forms de estructurarla de acuerdo con la forma en que codificó su aplicación. Además, tenga en count que debe poder usar el puerto 2195 para que esto funcione. Si ejecuta un server dedicado o interno, debería estar bien. Si es un server compartido, no funcionará.

  $passphrase = 'xxxxx'; // This is the passphrase used for file ck.pem $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); // ck.pem file must be included to sent token to ios devices stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); stream_context_set_option($ctx, 'ssl', 'verify_peer', true); stream_context_set_option($ctx, 'ssl', 'allow_self_signed', true); $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx); stream_set_blocking ($fp, 0); // Ensure that blocking is disabled if (!$fp) { $fds = "Failed to connect: $err $errstr" . PHP_EOL; return false; } else { // Create the payload body // this example uses a custom data payload. depending on your app you may need to change this $body['aps'] = array('alert' => $message, 'sound' => 'default', 'badge' => 1); // Encode the payload as JSON $payload = json_encode($body); // Build the binary notification $msg = chr(0) . pack('n', 32) . pack('H*', str_replace(' ', '',$token)) . pack('n', strlen($payload)) . $payload; // Send it to the server $result = fwrite($fp, $msg, strlen($msg)); // Close the connection to the server fclose($fp); } 
    Intereting Posts