Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

Pregătirea Apple Push Notification certificat SSL

Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

Trebuie să creați o cerere de semnare a certificatului. Acest lucru se face prin intermediul unei aplicații standard OS X numit „Keychain Access» (Keychain). Pornește-l și du-te imediat la o grămadă de chei de meniu -> Certificat Asistent -> Cerere de un certificat de la o autoritate de certificare.

Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

Apoi faceți clic pe Continue, pentru a alege un loc pe disc în cazul în care fișierul va fi salvat de interogare. Du-te înapoi la portalul de dezvoltator pentru a «Despre crearea unui cerere de certificat signin (CSR)» pagina, apăsați Continuare acolo, pe pagina care apare, alegeți fișierul nostru cerere și faceți clic pe Generare. Un sistem de gândire pic furnizează un link pentru a descărca certificatul generat, pe care le facem.

Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

Sistemul vă solicită să salvați fișierul certificat ca aps_development.cer. Te sfătuiesc să creați un director în cazul în care pentru a salva toate implicate. Încorporați-l în pachetul dvs. nu este neapărat cheia
3. În continuare, trebuie să încărcați cheia privată. Keychain Access deschis. Am găsit cheia, și selectați-l din meniu, selectați File -> Object Export.

Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

Sistemul vă cere să introduceți un cuvânt cheie - o parolă pentru accesul la cheia privată, chiar dacă cineva devine rost de chei de export, aceasta nu se poate folosi. Amintiți-vă această frază, ce notăm pass1.

Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

Sistemul vă solicită să salvați cheia într-un fișier cu extensie .p12 (lăsați-l să fie KeyName.p12). În același timp, să fie în continuare determinat să introduceți parola dvs. Keychain.

Pregătirea pentru serviciul push certificat ssl notificare, blog-ul heximal

4. Apoi, trebuie să convertiți certificatul în sine și cheia în format PEM (Keychain evacueazã obiecte în format DER). Nu știu dacă acest lucru sa datorat, doar biblioteca OpenSSL, prin care interacționăm cu serviciul Apple a Push notificare (APN-uri) în PHP, mult mai probabil de a lucra cu fișiere cu format PEM. Punerea în aplicare a OpenSSL este prezent în cele mai multe * nix-sisteme, cel puțin în OS X și FreeBSD vine ca dotare standard. Deschideți o fereastră de terminal și de a face următoarele.

atunci când a doua consolă de comandă vă cere să introduceți o frază-cheie de trei ori. Prima dată trebuie să introduceți expresia de acces pe care le introduceți atunci când exportați cheia (pass1). A doua și a treia oară - o nouă expresie de acces, care va genera o cheie PEM. Vom numi în mod condiționat pass2-l. Dacă face la fel ca nimic penal pass1 nu este.

Apoi, va trebui să lipici cele două fișiere.

și în cele din urmă obține fișierul APN-dev.pem că, în viitor și va fi operat pe server.
Apropo, aici este posibil să se verifice dacă ssl-certificatul descărcat / converti în mod corect. În recrutul consola

Dacă testați un certificat de producție, trebuie să specificați gateway.push.apple.com de domeniu în loc gateway.sandbox.push.apple.com

Dacă totul este în regulă, consola va da o mulțime de text.

Apoi transferat la server, copiați certificatul APN-dev.pem și de a crea cu el php-script. care va fi efectuată în mod direct prin e-mail Push-mesagerie

Aici ar trebui să acorde o atenție la următoarele nuanțe.
stream_context_set_option ($ stream_context, 'ssl', 'frază de acces', 'pass2');
În acest moment, trebuie să vă înregistrați expresia pass2 cheie (vezi. De mai sus). În caz contrar, OpenSSL de fiecare dată când va cere să-l introduceți manual.
$ Payload = preg_replace_callback ( '/ \\\\ u ​​([0-9A-f]) / i',
'Replace_unicode_escape_sequence', $ sarcină utilă);
Acest lucru se face în scopul de a crește lungimea efectivă a mesajului. Deoarece functia php json_encode converteste toate caractere non-ASCII în esență, că-unicode este de 5 ori mai reduce și nu atât de o mare lungime maximă Push-mesaje (256 de caractere).

Desigur, restul de logica de afaceri pot fi diferite, de exemplu, o listă de butoane de token-uri nu sunt într-o constantă matrice $ device_tokens. Această bucată de cod este pur pentru memento a principiilor lucrării este cu PHP și OpenSSL într-un mesaje de-a trimite împinge.

Dacă toate sa întâmplat acest lucru, veți avea toate la fel să fie făcut pentru Certificatul de producție. înainte de a publica aplicația.

1) Conform notificării trimise de la php, nu verifica pentru erori. Apple a extins de protocol, care returnează un cod atunci când apare o eroare. Cât de rău este? Să presupunem că aveți jetoane în dispozitivele de baze de date și una dintre ele este valabil. La trimiterea la conectarea unui dispozitiv va fi încheiată fără avertisment. Și tu în buclă continuă să trimită restul dispozitivului. Se pare că trimiteți o notificare că o parte din dispozitivele nu ajung, și nu vei ști în ce moment conexiunea a fost abandonat. Deci, nu știi cauza