Ich bin Entwickler für iOS-Apps und weiß nicht viel über PHP. Ich folge raywernlich Push Notification Tutorial Generieren Sie ein SSL-Zertifikat und einen privaten Schlüssel für die Push-Benachrichtigung.
Ich habe die Schritte 3-4 mal gemacht, aber es funktioniert nicht. Ich hatte vorher die gleichen Schritte gemacht und es hat funktioniert.
Ich denke, das Problem liegt in der Antwort, die ich erhalte, wenn ich die Verbindung zum APNS-Server mit einem SSL-Zertifikat überprüfe. Ich komme unter Antwort.
%Vor%
Zu Beginn der Antwort gibt es den Fehler verify error:num=20:unable to get local issuer certificate
. Im späteren Teil der Antwort heißt es auch No client certificate CA names sent
.
Ich bin mir dieser Dinge nicht bewusst, aber ich vermute, dass das Problem bei diesen Fehlern liegt.
BEARBEITEN: Fehler, den ich beim Senden von Benachrichtigungen mit Hilfe des im Tutorial bereitgestellten Beispiel-PHP-Skripts erhalte.
%Vor%BEARBEITEN: Mit dieser App (vorgeschlagen von segev in seiner Antwort) habe ich getestet, ob ein Problem mit dem Zertifikat / privaten Schlüssel vorliegt. Ich könnte eine Benachrichtigung erfolgreich erhalten. Also ich denke, das Problem ist nicht mit Zertifikat / privaten Schlüssel.
PHP-Skript, das ich verwende:
%Vor%BEARBEITEN: Mein Skript funktioniert, wenn ich es auf dem Produktionsserver verwende. Aber ich werde diese Frage offen halten, da sie nicht auf dem lokalen Server funktioniert. Vorschläge könnten anderen helfen, für die es auf dem Produktionsserver nicht funktioniert.
Es gibt so viele Dinge, die mit Push Notification schiefgehen, dass Sie sich ihnen einzeln nähern müssen.
Vergiss den PHP-Code für eine Sekunde. Gehen Sie hier und laden Sie die neueste Version herunter.
Dies ist eine großartige kleine App, die alle Serverseiten für Sie erledigt und eine Push-Benachrichtigung an Ihr Gerät sendet. Wenn das klappt, kannst du weitermachen und den PHP-Code implementieren, aber ich vermute, dass dein Problem mit dem App-Zertifikat \ key liegt.
Siehe den Fehler:
VERBUNDEN (00000003) Tiefe = 1 / C = US / O = Vertrauen, Inc./OU=www.entrust.net/rpa wird durch Bezugnahme / OU = (c) 2009 aufgenommen Entrust, Inc./CN=Entrust Certification Authority - L1C verifizieren Fehler: num = 20: lokales Ausstellerzertifikat kann nicht überprüft werden. Rückgabe: 0
Sehen Sie, wie Sie den Kontext für die Stream-Option angewendet haben:
%Vor%Ich habe das gleiche Tutorial wie Sie, auf der Troubleshooting-Sektion lesen Sie die Kugel # 3
Das lokale Ausstellerzertifikat konnte nicht abgerufen werden. Dieser Fehler bedeutet, dass der Zertifikat vom Server konnte nicht verifiziert werden. Um das zu beheben müssen Sie das Entrust CA-Stammzertifikat herunterladen. Das kann gemacht werden aus dem Terminal mit dem Befehl: curl -O Ссылка Sie dann muss auch stream_context_set_option ($ ctx, 'ssl', 'cafile', 'trust_2048_ca.cer');
Laden Sie trust_2048_ca.cer
herunterStellen Sie sicher, dass sich alle Zertifikate im selben Verzeichnis wie das PHP-Skript befinden.
Ändern Sie Ihren Code wie folgt:
%Vor%Du solltest jetzt gut sein.
Tags und Links push-notification php ios ssl openssl