Am încercat să migrez la nou API-ul APNs Provider.
Înainte de migrare, foloseam acest script pentru a trimite notificări push de testare către dispozitivul meu de testare.
<?php
// Puneți tokenul dispozitivului dvs. aici (fără spații):
$deviceToken = 'b5fa6af3eb6482ffa5d8551a0dcca76a780dcfc9662fbc7163a56d0973de8a9f';
// Pune aici fraza de acces a cheii tale private:
$parola = 'pushchat';
// Pune mesajul tau de alerta aici:
$message = 'Bună ziua!';
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Deschide o conexiune la serverul APNS
$fp = stream_socket_client(
'ssl://api.sandbox.push.apple.com:443', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
dacă (!$fp)
exit("Eșuat la conectare: $err $errstr" . PHP_EOL);
echo „Conectat la APNS” . PHP_EOL;
// Creați corpul sarcinii utile
$body['aps'] = matrice(
'alerta' => $mesaj,
'sound' => 'implicit'
);
// Codificați sarcina utilă ca JSON
$payload = json_encode($body);
// Creați notificarea binară
$msg = chr(0) . pachet('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($sarcină utilă)) . $sarcină utilă;
// Trimite-l la server
$rezultat = fwrite($fp, $msg, strlen($msg));
dacă (!$rezultat)
echo „Mesajul nu a fost livrat” . PHP_EOL;
altfel
echo „Mesajul a fost livrat cu succes” . PHP_EOL;
// Închideți conexiunea la server
fclose($fp);
Conform Trimiterea solicitărilor de notificare către APN-uri, acum sunt necesare câmpurile de antet
ca metodă
și cale
.
Când copiez și lipesc Anteturile din Trimiterea solicitărilor de notificare către APN-uri răspunsul terminal este Eroare de analiză PHP: eroare de sintaxă, simbol neașteptat „:” în /Users/Desktop/simple push folder/simplepush.php pe linia 6
<?php
ANTETURI
- END_STREAM
+ END_HEADERS
:method = POST
:scheme = https
:cale = /3/device/EXAMPLETOKEN
gazdă = api.sandbox.push.apple.com
apns-id = eabeae54-14a8-11e5-b60b-1697f925ec7b
apns-push-type = alertă
apns-expiration = 0
apns-priority = 10
DATE
+ END_STREAM
{ "aps": { "alert": "Bună ziua" } }
// Puneți tokenul dispozitivului dvs. aici (fără spații):
$deviceToken = 'EXAMPLETOKEN'; // Pune aici fraza de acces a cheii tale private:
$parola = 'pushchat';
// Pune mesajul tau de alerta aici:
$message = 'Bună ziua!';
////////////////////////////////////////////////////////////////////// /////////////////. //////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Deschide o conexiune la serverul APNS
$fp = stream_socket_client(
'ssl://api.sandbox.push.apple.com:443', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
dacă (!$fp)
exit("Eșuat la conectare: $err $errstr" . PHP_EOL);
echo „Conectat la APNS” . PHP_EOL;
// Creați corpul sarcinii utile
$body['aps'] = matrice(
'alerta' => $mesaj,
'sound' => 'implicit'
);
// Codificați sarcina utilă ca JSON
$payload = json_encode($body);
// Creați notificarea binară
$msg = chr(0) . pachet('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($sarcină utilă)) . $sarcină utilă;
// Trimite-l la server
$rezultat = fwrite($fp, $msg, strlen($msg));
dacă (!$rezultat)
echo „Mesajul nu a fost livrat” . PHP_EOL;
altfel
echo „Mesajul a fost livrat cu succes” . PHP_EOL;
// Închideți conexiunea la server
fclose($fp);
Care este modalitatea corectă de implementare a acestor câmpuri de antet cu acest script, astfel încât să poată trimite notificări push de testare?