iOS Development: Powiadomienia push z Firebase Cloud Messaging

in #polish6 years ago (edited)

info-1698140_640.jpg

Czego nauczę się w tym poradniku?

  • Jak utworzyć nowy projekt w Xcode
  • Jak wstępnie skonfigurować projekt, aby mógł korzystać z powiadomień push
  • Jak zainstalować Firebase SDK
  • Jak wygenerować klucz uwierzytelniający w Apple Developer Program
  • Jak utworzyć i zainstalować profil Provisioning Profile
  • Jak włączyć i skonfigurować powiadomienia z zastosowaniem Firebase Cloud Messaging
  • Jak wysłać powiadomienie do aplikacji iOS z Firebase Console

Wymagania

  • Komputer z systemem Mac OS
  • Urządzenie z systemem iOS
  • Edytor Xcode w wersji 8 lub nowszy
  • Kompilator języka Swift w wersji 3 lub nowszy
  • Płatna subskrypcja Apple Developer Program
  • Konto Google Account
  • Zainstalowane narzędzie Cocoapods w wersji 1.2.0 lub nowsze

Poziom trudności

  • Średni

Treść poradnika

Poniżej została przedstawiona lista czynności potrzebnych do skutecznej implementacji powiadomień Push Notifications w aplikacji iOS, z wykorzystaniem Firebase Cloud Messaging (FCM).

Firebase Cloud Messaging to wieloplatformowe rozwiązanie pozwalające na wysyłanie wiadomości i powiadomień na aplikacje iOS, Android i webowe, bez ponoszenia kosztów.

Tłumaczenie zostało wykonane w oparciu o treści zawarte na https://en.wikipedia.org/wiki/Firebase_Cloud_Messaging.

Informacja: Wskazówki testowano w systemie Mac OS High Sierra 10.13 z zainstalowanym edytorem Xcode w wersji 9.2, a testy aplikacji odbyły się na telefonie iPhone 5s z systemem iOS 11.

Przykładowy projekt znajduje się na moim repozytorium GIT pod adresem https://github.com/ptrio42/push-notifications-demo.

Tworzenie nowego projektu w Xcode

Przed rozpoczęciem procesu implementacji Push Notifications w projekcie, koniecznym jest jego utworzenie. Alternatywnie, istniejący projekt może zostać wykorzystany - w tym przypadku poniższy krok powinien zostać pominięty.

Aby stworzyć nowy projekt w Xcode, należy na ekranie powitalnym narzędzia odnaleźć opcję Create a new Xcode project.

Screen Shot 2018-03-11 at 14.43.39.png

Z listy, która się pojawi należy wybrać Single View Application oraz kliknąć w przycisk Next. Taki wybór oznacza, że aplikacja, która zostanie utworzona będzie posiadać jeden widok.

Informacja: Wybór aplikacji z pojedynczym widokiem to dobry punkt startowy dla nowej aplikacji. Większą ilość widoków można dodać w poźniejszych etapach pracy nad aplikacją.

Screen Shot 2018-03-10 at 15.31.54.png

W następnym kroku, koniecznym jest wprowadzenie nazwy produktu (projektu), wybór zespołu deweloperskiego, nazwy organizacji, identyfikatora organizacji oraz języka programowania.

Screen Shot 2018-03-10 at 16.22.42.png

Product Name, czyli nazwa produktu, jest używana do utworzenia unikalnego identyfikatora aplikacji tzw. Bundle Identifier. Nazwa ta jest prezentowana na liście aplikacji w systemie iOS i w AppStore oraz w otrzymywanym powiadomieniu push.

Team, inaczej zespół deweloperski, to pole wyboru zespołu deweloperskiego subskrybującego Apple Development Program.

Organization Name lub nazwa organizacji to inaczej nazwa wydawcy aplikacji.

Organization Identifier, czyli identyfikator organizacji to najczęściej adres www organizacji w odwróconej kolejności. Na przykład dla adresu mycompany.com identyfikatorem organizacji będzie com.mycompany. Identyfikator organizacji to drugi element, który jest zastosowany do utworzenia Bundle Identifier.

Bundle Identifier to unikalny identyfikator aplikacji.

Język programowania z ang. Language, to język, w którym aplikacja zostanie oprogramowana.

Dane można potwierdzić klikając w przycisk Next.

W przypadku, gdy żaden zespół deweloperski nie jest widoczny, można go dodać przechodząc do Xcode > Preferences > Accounts > +.

Następnie edytor poprosi o podanie lokalizacji do zapisania projektu. Potwierdzenie wybranej lokalizacji odbywa się za pomocą przycisku Create.

Po chwili, nowy projekt zostanie utworzony.

Screen Shot 2018-03-10 at 16.22.11.png

Informacja: Utworzony projekt oprogramowany będzie w języku Swift w wersji 3.2

Wstępna konfiguracja projektu w Xcode

Nim projekt będzie mógł korzystać z dobrodziejstw Push Notifications, konieczne jest przeprowadzenie konfiguracji wstępnej.

Pierwsza czynność, którą trzeba wykonać to włączenie Push Notifications w możliwościach aplikacji. W tym celu, należy przejść do zakładki Capabilities w ustawieniach głównych projektu.

Screen Shot 2018-03-10 at 16.22.11.png

Następnie suwak znajdujący się na prawo od Push Notifications powinien zostać ustawiony w pozycji On.

Screen Shot 2018-03-10 at 16.43.29.png

Odpowiednie App ID zostanie utworzone w tle, na koncie Apple Developer Program.

Screen Shot 2018-03-10 at 16.49.27.png

Instalacja Firebase SDK

Aby zainstalować Firebase SDK należy otworzyć narzędzie Terminal i przejść do katalogu projektu.

Koniecznym jest wygenerowanie pliku Podfile za pomocą narzędzia Cocoapods.

$ pod init

Następnie należy otworzyć plik Podfile za pomocą Xcode. Inne edytory mogą wprowadzić do pliku swoje znaczniki, co może skutkować jego uszkodzeniem, dlatego edytor Xcode jest rekomendowany.

$ open -a Xcode Podfile

Do pliku Podfile powinny zostać dodany pozycje pod 'Firebase/Core' oraz pod 'Firebase/Messaging'.

Screen Shot 2018-03-10 at 19.40.03.png

Konfigurację należy zapisać i powrócić do narzędzia Terminal. Instalacja Firebase SDK następuje po wykonaniu polecenia pod install.

$ pod install

W przypadku gdy instalacja przebiegła pomyślnie, zostanie wyświetlony rezultat podobny do poniższego.

Screen Shot 2018-03-10 at 19.42.04.png

Aby zależności dla projektu zostały wczytane przez Xcode należy go wyłączyć, a następnie uruchomić ponownie poprzez plik My Product Name.xcworkspace, znajdujący się w katalogu głównym projektu.

Screen Shot 2018-03-10 at 17.47.50.png

W panelu bocznym struktury projektu w Xcode zostanie wyświetlona pozycja Pods, która reprezentuje strukturę plików będących zależnościami projektu.

Screen Shot 2018-03-10 at 17.51.28.png

Generowanie klucza uwierzytelniającego

Klucz uwierzytelniający pozwala na autoryzację aplikacji w Apple Push Notifications Services. Jest to krok konieczny do implementacji Push Notifications w aplikacji iOS.

Na koncie Apple Developer Program należy przejść do sekcji Keys i kliknąć w przycisk +.

Screen Shot 2018-03-10 at 18.13.17.png

Wymaganym jest podanie nazwy klucza weryfikacyjnego i zaznaczenie pozycji APNs. Skrót APNs to w języku angielskim Apple Push Notification service czyli usługi powiadomień push dostarczane przez firmę Apple.

Screen Shot 2018-03-10 at 18.15.28.png

Należy wybrać Continue aby przejść dalej.

Screen Shot 2018-03-10 at 18.17.45.png

Proces tworzenia nowego klucza weryfikującego można zakończyć klikając w Confirm.

Screen Shot 2018-03-10 at 18.20.26.png

Następnie należy pobrać wygenerowany klucz weryfikacyjny.

Screen Shot 2018-03-10 at 18.21.52.png

Informacja: Ze względów bezpieczeństwa, klucz weryfikacyjny może być pobrany tylko raz.

Generowanie profilu Provisioning Profile

Profil Provisioning Profile, w tym przypadku, pozwala na autoryzację urządzeń do uruchomienia aplikacji, która nie została opublikowana w AppStore.

Aby utworzyć nowy Provisioning Profile należy przejść do sekcji Provisioning Profiles na koncie Apple Developer Program i kliknąć w przycisk +.

Screen Shot 2018-03-10 at 18.53.04.png

Informacja: Na potrzeby niniejszego poradnika, wygenerowany profil będzie umożliwiał testowanie aplikacji w środowisku deweloperskim.

Aby wygenerować Provisioning Profile należy zaznaczyć pozycję iOS App Development, a następnie kliknąć w Continue.

Screen Shot 2018-03-10 at 19.13.01.png

Kolejnym krokiem jest wybór odpowiedniego identyfikatora aplikacji z rozwijanej listy i potwierdzenie go za pomocą przycisku Continue.

Screen Shot 2018-03-10 at 19.18.22.png

Na wyświetlonym ekranie należy wybrać certyfikat połączony z kontem w Xcode. W większości przypadków nazwa certyfikatu będzie odpowiadać imieniu i nazwisku użytkownika.

Screen Shot 2018-03-10 at 19.21.43.png

Po przejściu do następnego ekranu, zostanie zaprezentowana lista urządzeń, na których będzie możliwe uruchomienie aplikacji. Należy wybrać odpowiednie urządzenia i potwierdzić wybór klikając w Continue.

Screen Shot 2018-03-10 at 19.28.25.png

Proces tworzenia Provisioning Profile można zakończyć wprowadzając nazwę profilu i potwierdzając przyciskiem Continue.

Screen Shot 2018-03-10 at 19.30.26.png

Instalacja Provisioning Profile

Aby zainstalować profil Provisioning Profile należy w pierwszej kolejności go pobrać.

Screen Shot 2018-03-10 at 19.33.55.png

Instalacja następuje przez dwukrotne kliknięcie w plik profilu. Po zakończeniu procesu instalacji, nastąpi powrót do edytora Xcode.

Konfiguracja projektu w Firebase

W pierwszym kroku konfiguracji projektu w Firebase należy zalogować się do konta Google i przejść do konsoli Firebase Console dostępnej pod adresem https://console.firebase.google.com/.

Aby udostępnić możliwość korzystania z Push Notifications dowolnej aplikacji iOS koniecznym będzie utworzenie nowego projektu.

Screen Shot 2018-03-10 at 15.16.50.png

Następnie należy podać nazwę projektu oraz kraj zamieszkania i potwierdzić dane, klikając w Create Project.

Screen Shot 2018-03-10 at 15.17.13.png

Gdy proces tworzenia nowego projektu zakończy się, chęć kontynuowania należy potwierdzić, klikając w Continue.

Screen Shot 2018-03-10 at 14.53.59.png

Na ekranie głównym projektu koniecznym jest wybranie przycisku iOS.

Screen Shot 2018-03-10 at 15.03.59.png

W oknie, które zostanie wyświetlone należy wprowadzić identyfikator aplikacji Bundle Identifier i wybrać Register App.

Screen Shot 2018-03-10 at 16.59.50.png

Kolejną wymaganą czynnością jest pobranie pliku GoogleService-Info.plist i dodanie go do katalogu głównego projektu.

Screen Shot 2018-03-10 at 17.02.35.png

Plik GoogleService-Info.plist można dodać do projektu przeciągając go z narzędzia Finder do panelu struktury projektu w Xcode.

Potwierdzenie dodania pliku do projektu odbywa się klikając w przycisk Finish.

Screen Shot 2018-03-10 at 17.08.02.png

Plik zostanie wyświetlony w panelu bocznym.

Screen Shot 2018-03-10 at 17.10.58.png

Następnie należy powrócić do Firebase i kliknąć w Skip to the console.

Implementacja klucza weryfikacyjnego w Firebase

W celu implementacji klucza weryfikacyjnego, należy przejść do ustawień projektu w Firebase.

Screen Shot 2018-03-10 at 18.27.47.png

Następnie, koniecznym jest przejście do zakładki Cloud Messaging.

Screen Shot 2018-03-10 at 18.29.02.png

Aby dodać klucz weryfikacyjny, wymagane jest także przejście do sekcji iOS app configuration i kliknięcie w przycisk Upload.

Screen Shot 2018-03-10 at 18.31.03.png

W następnym kroku konieczne będzie wybranie pobranego wcześniej klucza weryfikacyjnego.

Screen Shot 2018-03-10 at 18.35.18.png

Wymagane jest również wprowadzenie identyfikatora klucza Key ID oraz App ID prefix. Identyfikator można znaleźć na koncie Apple Developer Program, po kliknięciu w nazwę klucza w sekcji Keys.

Screen Shot 2018-03-10 at 18.38.22.png

App ID prefix można wyświetlić przechodząc do sekcji App IDs, a następnie klikając na nazwę wybranej aplikacji.

Screen Shot 2018-03-10 at 18.42.37.png

Proces implementacji klucza można potwierdzić klikając w Upload.

Screen Shot 2018-03-10 at 18.47.04.png

Implementacja Push Notifications w projekcie

Ostatnim etapem jest inicjalizacja Firebase w projekcie. W tym celu należy przejść do edytora Xcode i wybrać plik AppDelegate.

Screen Shot 2018-03-10 at 19.47.52.png

Na górze pliku należy dodać poniższy kod.

import UserNotifications
import Firebase

Klasa AppDelegate będzie dostosowana do protokołu UNUserNotificationCenterDelegate oraz MessagingDelegate.

Poniższy kod:

class AppDelegate: UIResponder, UIApplicationDelegate

należy zastąpić:

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate

Wewnątrz metody application:didFinishLaunchingWithOptions: koniecznym jest dodanie poniższej treści.

FirebaseApp.configure()

Dodatkowo, w celu rejestracji aplikacji w usłudze Push Notifications, podczas jej startu, wewnątrz metody application:didFinishLaunchingWithOptions: należy również umieścić poniższy kod.

Messaging.messaging().delegate = self
if #available(iOS 10.0, *) {
  UNUserNotificationCenter.current().delegate = self
  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: {_, _ in })
} else {
  let settings: UIUserNotificationSettings =
  UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()

Wewnątrz klasy AppDelegate należy również dodać poniższą metodę.

func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
    debugPrint("Firebase token: \(fcmToken)")
}

Budowanie aplikacji na urządzeniu mobilnym Apple

Aby zbudować aplikację na urządzeniu mobilnym, należy podłączyć je do komputera za pomocą kabla USB, a następnie wybrać je jako Target Device z listy urządzeń.

Screen Shot 2018-03-10 at 20.22.40.png

Informacja: Urządzenie mobline musi być autoryzowane do uruchomienia aplikacji. Innymi słowy, musi to być urządzenie wybrane podczas tworzenia profilu Provisioning Profile.

Proces budowania aplikacji można rozpocząć, klikając w przycisk oznaczony poniżej.

Screen Shot 2018-03-10 at 20.26.19.png

Należy poczekać aż aplikacja zostanie zbudowana.

Screen Shot 2018-03-11 at 16.21.56.png

Informacja: Podczas procesu budowania aplikacji, narzędzie codesign może poprosić o pozwolenie na dostęp do kluczy znajdujących się w pęku kluczy keychain w systemie Mac OS. Należy wprowadzić hasło użytkownika i udzielić zezwolenia, wybierając opcję Always Allow.

Screen Shot 2018-03-11 at 16.07.24.png

Po chwili, aplikacja powinna zostać uruchomiona na urządzeniu mobilnym. Ze względu na brak jakichkolwiek elementów graficznych, powinien zostać wyświetlony biały ekran. Dodatkowo, ze względów bezpieczeństwa, system zapyta o pozwolenie na otrzymywanie powiadomień od aplikacji. Należy
udzielić zgody, wybierając Allow.

IMG_3346.PNG

Aplikację należy następnie przełączyć w tryb w tle, naciskając przycisk Home na urządzeniu mobilnym.

Wysyłanie powiadomień z Firebase Console

Aby przetestować działanie powiadomień push należy przejść do Firebase Console i wybrać projekt utworzony we wcześniejszych krokach.

Z lewego menu powinna zostać wybrana pozycja Grow > Notifications.

Screen Shot 2018-03-11 at 16.39.44.png

Następnie koniecznym jest wprowadzenie treści powiadomienia oraz wybór aplikacji, do której zostanie ono wysłane. Oznacza to, że powiadomienie będzie dostarczone do wszystkich urządzeń, na których została zainstalowana aplikacja. Dodatkowo powiadomienie można wysłać do subskrybentów danego tematu lub do pojedynczego urządzenia.

Screen Shot 2018-03-11 at 16.36.03.png

Po kliknięciu w SEND MESSAGE, zostanie wyświetlone nowe okno i wymagane będzie potwierdzenie operacji.

Screen Shot 2018-03-11 at 16.36.31.png

Po potwierdzeniu operacji, nastąpi przekierowanie do listy wysłanych wiadomości. Pozycja Status informuje o obecnym stanie procesu wysyłki. Status Completed oznacza, że wiadomość została pomyślnie wysłana na urządzenia mobilne.

Screen Shot 2018-03-11 at 16.39.08.png

W tym samym czasie, na urządzeniu mobilnym powinno pojawić się powiadomienie push.

IMG_3348.PNG

Wnioski

Po ukończeniu poradnika, uzyskana wiedza powinna pozwolić zainteresowanemu użytkownikowi na pełną implementację Push Notifications w jego aplikacji w wersji deweloperskiej i odbieranie powiadomień z Firebase Console.

Sort:  

@resteemator is a new bot casting votes for its followers. Follow @resteemator and vote this comment to increase your chance to be voted in the future!

Coin Marketplace

STEEM 0.27
TRX 0.12
JST 0.032
BTC 67020.32
ETH 3084.67
USDT 1.00
SBD 3.70