2017-08-30 1 views
1

Ich versuche Postman zu verwenden, um Apple Benachrichtigungen in meiner iOS App zu erstellen und zu testen.APNS Provider API und Postman

Aus einem Grund bekomme ich nicht, Anfragen senden ich von Postman entweder https://api.development.push.apple.com/3/device/<token-device> oder https://api.push.apple.com/3/device/<token-device> fehlschlagen, ohne HTTP-Antwort.

Was ich bisher getan habe:

1 - erstellt und exportiert einen APNS Zertifikat von meinem developer.apple.com Konto (wie erklärt there).

2 - umgewandelt dieses P12-Zertifikat mit einer aktuellen Version von Openssl (1.0.2l) zu einem .pem cert und Schlüssel wie folgt aus:

openssl pkcs12 -in apns.p12 -out apns.crt.pem -clcerts -nokeys 
openssl pkcs12 -in apns.p12 -out apns.key.pem -nocerts -nodes 

3 - konfiguriert Postbote (Einstellungen> Zertifikate) zu verwenden, Diese .pem-Dateien für beide Anbieter-API-URLs (dev und prod)

4 - richten Sie eine POST-Anforderung an diesen Provider-API-Endpunkt für mein Geräte-Token mit einem Header apns-topic ein, der über meine Bundle-ID für Wert und einen HTTP-Körper verfügt dies:

{ 
    "aps" : { 
     "alert" : { 
      "title" : "Game Request", 
      "body" : "Bob wants to play poker" 
     } 
    } 
} 

Es schlägt mit "Konnte keine Antwort erhalten, blablabla".

Wenn ich überprüfen, was es der Postbote Konsole geschieht, sehe ich:

POST https://api.development.push.apple.com/3/device/12340e529f85a145b567736e7fd84c9d7e42a43a3c343ec378c2ff071011e4 06:18:08.236

Error: Parse Error

Client Certificate:

keyPath:"/Users/thomas/wksp_myproj/apns.key.pem"

pemPath:"/Users/thomas/wksp_myproj/apns.crt.pem"

Request Headers:

cache-control:"no-cache"

Postman-Token:"99615df2-b2aa-4a51-8d15-8ce27f4e8ca9"

Content-Type:"application/json"

apns-topic:"myproj.app"

Auch wenn ich mit openssl testen, wie there erklärt:

openssl s_client -connect api.development.push.apple.com:443 -cert apns.pem -debug -showcerts -CAfile GeoTrust_Global_CA.pem

bekomme ich eine Menge Ausgaben mit am Ende: HTTP/2 client preface string missing or corrupt. Hex dump for received bytes: 0aread from 0x7f9445c215c0 [0x7f9446015c03] (5 bytes => 0 (0x0)) read:errno=0

Was läuft falsch?

+0

Nicht sicher, ob es das ist, warum ich diesen Fehler bekomme, aber es scheint, dass die APS Provider API HTTP/2 benötigt, die von Postman noch nicht unterstützt wird: (... –

Antwort

0

OK, vergiss Postbote, ich habe mit curl mit http2 und einer aktualisierten Version von openssl (1.0.2l) gelandet und es funktioniert gut. Für diejenigen, die ein curl-Befehlsbeispiel sehen möchten, ist es here.

Verwandte Themen