iOS Push Notifications i node.js (cz. 2)

iOS Push Notifications i node.js (cz. 2)

W poprzednim odcinku utworzyliśmy aplikację, która powinna być zdolna do odbierania powiadomień push i wygenerowaliśmy klucz dostępu do APN. Nadszedł czas by sprawdzić czy wszystko poszło zgodnie z planem i coś sobie wysłać.
Nie siedzę za bardzo w backendzie, ale z racji moich kontaktów z SAP zainteresowało mnie ostatnio Node.JS. Lubię nowe rzeczy, więc nasze powiadomienia wyślemy używając JavaScript.
Jestem zwolennikiem używania kodu, który przetestowały setki, jeśli nie tysiące osób (developer to też człowiek) posłużyłem się więc czymś co działa. Nie chciało zadziałać od samego początku, ale w końcu działa. Mogę się niepokoić pushami.
Zakładam, że nasze Node jest zainstalowane i działa.
Uruchamiamy nasz ulubiony terminal, robimy nowy katalog, bez zbędnych pytań tworzymy nowy projekt Node.JS i instalujemy potrzebny pakiet:
mkdir blog_node_push
cd blog_node_push
npm init --yes
npm install apn --save

Tworzymy nowy plik. W jakimś ulubionym edytorze lub IDE wybieramy coś w stylu File->New, a w terminalu touch sendPush.js.

Nadszedł czas na mięsko, wysyłamy przeszkadzacze.

Na końcu pokażę cały kod, dużo tego nie będzie.
Na początek przestroga. Jeżeli znajdziecie jakieś tutoriale z apn.Connection(options); to uciekajcie. Stare dzieje. Nowa wersja, 2.0 używa providera i tym się zajmiemy.
Czego będziemy potrzebowali:

  • pliku z kluczem (.p8)
  • identyfikatora klucza (KeyID)
  • Team ID

Klucz mamy, a więc i identyfikator jest w naszym posiadaniu.
Jeżeli zapomnieliśmy naszego TeamId to znajdziemy ten string po zalogowaniu się na koncie developerskim pod linkiem:

Mając wszystkie dane możemy zacząć coś tworzyć. Na początek dane do APN:

I w końcu coś wysyłamy:

Obiecany kod, który działa. Całe kilkanaście linii, które spowoduje, że podskoczymy na krześle. Cmd-A, Cmd-C, Cmd-V i tyle.

Jesteśmy w terminalu. W naszym katalogu. Ognia:
node sendPush.js

Działa?

działa

Działa.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *