Apple hat ihren Push-Benachrichtigungsdienst aktualisiert und die Zertifikatsdatei ist nun eine .p8-Datei. Es gibt viele Beispiele online, wie man eine Push-Benachrichtigung mit der .pem-Datei sendet, aber ich kann nichts für eine .p8-Datei finden. Hat jemand Code, der mit der .p8-Datei funktioniert?Senden iOS Push-Benachrichtigung in PHP mit. P8-Datei
Antwort
Ich habe versucht, Push-Benachrichtigung mit neuen JWT based push notification service mit PHP zu senden. Es war definitiv keine leichte Aufgabe.
Ich habe Projekt auf GitHub hochgeladen. Sie können von dort herunterladen und stellen Sie sicher, dass Sie Ihre .p8-Datei durch vorhandene .p8-Datei ersetzen.
dann in push.php
Datei benötigen Sie kid
, iss(Team ID)
, token
und app_bundle_id
zu ersetzen.
Gehen Sie in das Verzeichnis und führen Sie vom Terminal aus den Befehl php push.php
aus. Wenn alles gut läuft, sollten Sie eine Push-Benachrichtigung erhalten.
Diese Lösung funktioniert gut für mich. Stellen Sie nur sicher, dass Sie im Terminal keine Fehler bekommen.
Ich hoffe, das hilft.
Mit dem folgenden Skript bin ich in der Lage, tokenbasierte Push-Benachrichtigungen mit der .p8-Datei zu senden.
Die Mindestversion von curl diese Unterstützung ist 7.38.0, und es muss mit der Flagge kompiliert werden --with-nghttp2 und OpenSSL> = 1.0.2
<?php
$keyfile = 'AuthKey_AABBCC1234.p8'; # <- Your AuthKey file
$keyid = 'AABBCC1234'; # <- Your Key ID
$teamid = 'AB12CD34EF'; # <- Your Team ID (see Developer Portal)
$bundleid = 'com.company.YourApp'; # <- Your Bundle ID
$url = 'https://api.development.push.apple.com'; # <- development url, or use http://api.push.apple.com for production environment
$token = 'e2c48ed32ef9b018........'; # <- Device Token
$message = '{"aps":{"alert":"Hi there!","sound":"default"}}';
$key = openssl_pkey_get_private('file://'.$keyfile);
$header = ['alg'=>'ES256','kid'=>$keyid];
$claims = ['iss'=>$teamid,'iat'=>time()];
$header_encoded = base64($header);
$claims_encoded = base64($claims);
$signature = '';
openssl_sign($header_encoded . '.' . $claims_encoded, $signature, $key, 'sha256');
$jwt = $header_encoded . '.' . $claims_encoded . '.' . base64_encode($signature);
// only needed for PHP prior to 5.5.24
if (!defined('CURL_HTTP_VERSION_2_0')) {
define('CURL_HTTP_VERSION_2_0', 3);
}
$http2ch = curl_init();
curl_setopt_array($http2ch, array(
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2_0,
CURLOPT_URL => "$url/3/device/$token",
CURLOPT_PORT => 443,
CURLOPT_HTTPHEADER => array(
"apns-topic: {$bundleid}",
"authorization: bearer $jwt"
),
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $message,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 30,
CURLOPT_HEADER => 1
));
$result = curl_exec($http2ch);
if ($result === FALSE) {
throw new Exception("Curl failed: ".curl_error($http2ch));
}
$status = curl_getinfo($http2ch, CURLINFO_HTTP_CODE);
echo $status;
function base64($data) {
return rtrim(strtr(base64_encode(json_encode($data)), '+/', '-_'), '=');
}
?>
Ich bekomme einen Fehler als 'Unerwartete HTTP/1.x Anfrage: POST/3/device/5cba9501b6b6b3d6xxxxxxxxxxxxx'. Können Sie eine Lösung vorschlagen? –
Können Sie versuchen, den Webserver neu zu starten, wie in dieser Antwort vorgeschlagen: https://stackoverflow.com/a/48007808/1833495? –
- 1. IOS senden an PHP und geben Daten
- 2. senden iOS Push-Benachrichtigung von PHP
- 3. So senden Sie iOS Push-Benachrichtigungen mit TLS und PHP?
- 4. Kerndaten mit iOS-App senden
- 5. Senden Header mit AVPlayer Anfrage in iOS
- 6. So senden APNS Push-Benachrichtigung (iOS) von C# ohne Warteschlange
- 7. Senden von UTF 8 von iOS nach PHP über POST
- 8. iOS Push-Benachrichtigung senden Fehler
- 9. Senden Push-Benachrichtigung mit GCM in PHP
- 10. Senden # Symbol mit AJAX PHP
- 11. senden xmpp Nachricht mit Push-Benachrichtigung iOS
- 12. Senden php Senden an MySQL
- 13. E-Mail senden mit Mandrill mit PHP
- 14. Anfrage über Mobilfunknetz in iOS senden
- 15. Facebook senden Dialog in iOS app
- 16. iOS kann keine Wörterbuchparameter in FBSDKGraphRequest senden
- 17. PHP senden Schaltfläche in Echo
- 18. Umgang mit Emoji in PHP
- 19. Ich möchte Benutzer-ID mit Bild hochladen in ios senden
- 20. Wie Sendeanforderung mit mehrteiligen Formulardaten in iOS-Ziel c senden?
- 21. Programmgesteuertes Senden eines Fernsteuerungsereignisses in iOS
- 22. Benutzeraktion an Eltern uiview in iOS senden
- 23. senden E-Mail in Hintergrund von iOS
- 24. Senden Sie E-Mail mit Zeilenumbrüchen mit mail() in PHP
- 25. PHP Gmail API Nachricht senden von "senden"
- 26. iOS Symbol "Drucken" oder "Senden"
- 27. PHP Beitrag Anfrage Senden
- 28. jquery + php Werte senden
- 29. Wie HTML-Nachricht mit PHP senden?
- 30. senden Sie Dateidaten mit PHP HttpRequest
Ich versuche haben, aber arbeiten nicht in php5 .6 Version geben Fehler. –