Samouczek: tworzenie powiadomień wypychanych w aplikacji systemu iOS
Ten samouczek przeprowadzi Cię przez proces tworzenia powiadomień wypychanych w aplikacji systemu iOS przy użyciu zestawu SDK czatu usług Azure Communication Services.
Powiadomienia wypychane ostrzegają użytkowników przychodzących wiadomości w wątku czatu, gdy aplikacja mobilna nie jest uruchomiona na pierwszym planie. Usługi Azure Communication Services obsługują dwie wersje powiadomień wypychanych:
Wersja podstawowa: na ikonie aplikacji pojawia się numer znaczka, urządzenie odtwarza dźwięk powiadomienia, a zostanie wyświetlony wyskakujące baner alertu.
Wersja zaawansowana: oprócz funkcji obsługiwanych w wersji podstawowej można dostosować tytuł i podgląd komunikatów na banerze alertu.
W tym samouczku zostały wykonane następujące czynności:
- Skonfiguruj certyfikat usługi Apple Push Notification Service (APNs).
- Skonfiguruj program Xcode na potrzeby powiadomień wypychanych.
- Zaimplementuj podstawową lub zaawansowaną wersję powiadomień wypychanych.
- Przetestuj powiadomienia w aplikacji.
- Skonfiguruj automatyczne odnawianie rejestracji dla powiadomień wypychanych.
Pobieranie kodu
Uzyskaj dostęp do przykładowego kodu dla tego samouczka w usłudze GitHub.
Wymagania wstępne
Zakończ wszystkie kroki wymagań wstępnych w przewodniku Szybki start: dodawanie czatu do aplikacji.
Utwórz centrum powiadomień platformy Azure w ramach tej samej subskrypcji co zasób usług komunikacyjnych, a następnie połącz centrum powiadomień z zasobem usług komunikacyjnych. Zobacz Aprowizowanie centrum powiadomień.
Utwórz certyfikat APNs p12 i ustaw go w centrum powiadomień
Jeśli nie jesteś klientem wewnętrznym firmy Microsoft, wykonaj wszystkie kroki opisane w poniższej procedurze.
Jeśli jesteś klientem wewnętrznym firmy Microsoft, prześlij bilet i podaj identyfikator pakietu aplikacji, aby uzyskać certyfikat p12. Następnie przejdź do ostatniego kroku w poniższej procedurze.
Przejdź do pozycji Certyfikaty, Identyfikatory i>identyfikatory profilów Identyfikatory> aplikacji, a następnie wybierz identyfikator aplikacji skojarzony z aplikacją.
Na stronie identyfikatora aplikacji wybierz pozycję Możliwości>powiadomienia wypychane, a następnie wybierz pozycję Zapisz.
W wyświetlonym oknie dialogowym Modyfikowanie możliwości aplikacji wybierz pozycję Potwierdź.
Na stronie identyfikatora aplikacji wybierz pozycję Możliwości Skonfiguruj>powiadomienia> wypychane, a następnie wybierz następujące opcje:
- Aby przetestować powiadomienia wypychane podczas tworzenia aplikacji systemu iOS, wybierz przycisk Utwórz certyfikat w obszarze Programowanie certyfikatu SSL.
- Aby wysyłać powiadomienia wypychane w środowisku produkcyjnym, wybierz przycisk Utwórz certyfikat w obszarze Produkcyjny certyfikat SSL.
Na stronie Certyfikaty, Identyfikatory i profile zostanie wyświetlony obszar Tworzenie nowego certyfikatu.
W tym obszarze przekażesz żądanie podpisania certyfikatu (CSR):
Na nowej karcie przeglądarki postępuj zgodnie z tą stroną pomocy firmy Apple, aby utworzyć plik CSR i zapisać go jako aplikację name.cer. Instrukcje obejmują używanie Asystenta certyfikatów do żądania certyfikatu i wypełniania informacji o certyfikacie.
Przeciągnij plik .cer do obszaru Wybierz plik . Następnie wybierz pozycję Kontynuuj w prawym górnym rogu.
Wybierz Pobierz.
Zapisz plik lokalnie w formacie p12.
Otwórz pobrany plik .cer. W obszarze Dostęp do pęku kluczy wybierz certyfikat, kliknij go prawym przyciskiem myszy, a następnie wyeksportuj certyfikat w formacie p12.
Przejdź do centrum powiadomień. W obszarze Ustawienia wybierz pozycję Apple (APNS). Następnie wypełnij szczegóły certyfikatu:
- W obszarze Tryb uwierzytelniania wybierz pozycję Certyfikat.
- W polu Przekaż certyfikat przekaż właśnie utworzony plik p12.
- W obszarze Tryb aplikacji wybierz tryb w zależności od potrzeb.
Po zakończeniu wprowadzania wszystkich informacji wybierz pozycję Zapisz.
Konfigurowanie programu Xcode
W programie Xcode przejdź do pozycji Podpisywanie i możliwości.
Dodaj możliwość, wybierając pozycję + Możliwości, a następnie wybierz pozycję Powiadomienia wypychane.
Dodaj kolejną możliwość, wybierając pozycję + Możliwości, a następnie wybierz pozycję Tryby w tle.
W obszarze Tryby w tle wybierz pozycję Powiadomienia zdalne.
W polu Obiekt docelowy zasobnika — AzureCore ustaw opcję Wymagaj tylko interfejsu API bezpiecznego dla rozszerzenia aplikacji jako Nie.
Implementowanie powiadomień wypychanych
Wersja podstawowa
Jeśli chcesz zaimplementować podstawową wersję powiadomień wypychanych, musisz zarejestrować się w celu otrzymywania powiadomień zdalnych za pomocą usługi APNs. Zapoznaj się z przykładowym kodem , aby zobaczyć powiązaną implementację w pliku AppDelegate.swift.
Wersja zaawansowana
Jeśli chcesz zaimplementować zaawansowaną wersję powiadomień wypychanych, musisz uwzględnić następujące elementy w aplikacji. Przyczyną jest to, że szyfrowanie zawartości klienta (na przykład zawartość wiadomości czatu i nazwa wyświetlana nadawcy) w ładunkach powiadomień wypychanych wymaga pewnych obejść.
Magazyn danych dla kluczy szyfrowania
Tworzenie trwałego magazynu danych na urządzeniach z systemem iOS. Ten magazyn danych powinien mieć możliwość udostępniania danych między główną aplikacją a rozszerzeniami aplikacji.
W przykładowym kodzie tego samouczka wybierz pozycję Grupy aplikacji jako magazyn danych, wykonując następujące akcje:
Dodaj możliwość grup aplikacji do elementów docelowych aplikacji (głównych aplikacji i rozszerzeń aplikacji), wykonując kroki opisane w artykule Firmy Apple Dodawanie możliwości do aplikacji.
Skonfiguruj grupy aplikacji, wykonując kroki opisane w artykule Apple Configuring App Groups (Konfigurowanie grup aplikacji). Upewnij się, że główna aplikacja i rozszerzenia aplikacji mają taką samą nazwę kontenera.
Rozszerzenie usługi powiadomień
Zaimplementuj rozszerzenie usługi powiadomień powiązane z główną aplikacją. To rozszerzenie aplikacji służy do odszyfrowywania ładunku powiadomień wypychanych po odebraniu go przez urządzenie.
Przejdź do pozycji Dodaj rozszerzenie aplikacji usługi do projektu w dokumentacji firmy Apple i wykonaj kroki.
Przejdź do sekcji Implementowanie metod obsługi rozszerzenia w dokumentacji firmy Apple. Firma Apple udostępnia domyślny kod do odszyfrowywania danych i możesz postępować zgodnie z ogólną strukturą tego samouczka. Jednak ze względu na to, że używasz zestawu SDK czatu do odszyfrowywania, musisz zastąpić część rozpoczynającą się od
// Try to decode the encrypted message data
dostosowanej logiki. Zapoznaj się z przykładowym kodem , aby zobaczyć powiązaną implementację w pliku NotificationService.swift.
Implementacja protokołu PushNotificationKeyStorage
Protokół PushNotificationKeyStorage
jest wymagany dla zaawansowanej wersji powiadomień wypychanych. Możesz użyć domyślnej AppGroupPushNotificationKeyStorage
klasy, którą udostępnia zestaw Chat SDK. Jeśli nie używasz grup aplikacji jako magazynu kluczy lub chcesz dostosować metody magazynu kluczy, utwórz własną klasę zgodną z protokołem PushNotificationKeyStorage
.
PushNotificationKeyStorage
definiuje dwie metody:
onPersistKey(encryptionKey:expiryTime)
: Ta metoda służy do utrwalania klucza szyfrowania w magazynie urządzenia z systemem iOS użytkownika. Zestaw SDK czatu ustawia 45 minut jako czas wygaśnięcia klucza szyfrowania. Jeśli chcesz, aby powiadomienia wypychane obowiązywały przez ponad 45 minut, należy zaplanowaćchatClient.startPushNotifications(deviceToken:)
wywołanie częściej (na przykład co 15 minut), aby można było zarejestrować nowy klucz szyfrowania przed wygaśnięciem starego klucza.onRetrieveKeys() -> [String]
: Ta metoda służy do pobierania prawidłowych kluczy, które były wcześniej przechowywane. Masz elastyczność zapewniania dostosowywania na podstawie wybranego wcześniej magazynu danych.
W rozszerzeniu protokołu zestaw SDK czatu udostępnia implementację decryptPayload(notification:) -> PushNotificationEvent
metody, której można użyć. Zapoznaj się z przykładowym kodem , aby zobaczyć powiązaną implementację w pliku NotificationService.swift.
Testowanie powiadomień
Utwórz wątek czatu z użytkownikiem A i użytkownikiem B.
Umieść wartości i
<ACS_RESOURCE_ENDPOINT>
user A<ACESS_TOKEN>
w pliku AppSettings.plist.Ustaw wartość Włącz kod bitowy na Nie dla dwóch miejsc docelowych zasobników: AzureCommunicationChat i Trouter.
Podłącz urządzenie z systemem iOS do komputera Mac i uruchom program. Po wyświetleniu monitu o autoryzowanie powiadomień wypychanych na urządzeniu wybierz pozycję Zezwalaj.
Jako użytkownik B wyślij wiadomość czatu. Upewnij się, że użytkownik A odbiera powiadomienie wypychane na urządzeniu z systemem iOS.
Implementowanie odnawiania rejestracji
Aby firma Microsoft zapewniła bezpieczną usługę czatu, rejestracja powiadomień wypychanych na urządzeniach z systemem iOS pozostaje ważna tylko przez 45 minut. Aby zachować funkcjonalność powiadomień wypychanych, należy zaimplementować odnawianie rejestracji w aplikacji klienckiej.
W tym samouczku zaproponowano dwa rozwiązania zgodne z oficjalnymi wytycznymi firmy Apple. Zalecamy zaimplementowanie obu rozwiązań razem w celu zwiększenia ich skuteczności.
Uwaga
Różne czynniki mogą mieć wpływ na skuteczność obu rozwiązań. Na przykład stan baterii urządzenia, warunki sieciowe i ograniczenia specyficzne dla systemu iOS mogą mieć wpływ na możliwość uruchamiania zadań w tle przez aplikację. Aby uzyskać więcej informacji, zobacz wideo Advances in App Background Execution (Zaawansowane wykonywanie w tle aplikacji) i push background updates to your app (Wypychanie aktualizacji w tle do aplikacji ) firmy Apple.
Rozwiązanie 1. Zadania w tle
Zadania w tle umożliwiają wykonywanie działań nawet wtedy, gdy aplikacja nie znajduje się na pierwszym planie. Podczas implementowania zadania w tle aplikacja może zażądać więcej czasu na ukończenie określonego zadania, takiego jak odnowienie rejestracji powiadomień wypychanych.
W poniższych sekcjach opisano sposób używania zadań w tle do odnawiania rejestracji.
Konfigurowanie automatycznego odświeżania tokenów dostępu użytkowników
Aby zapewnić nieprzerwany dostęp do usług czatów, należy zachować prawidłowe tokeny dostępu użytkowników. Tokeny zazwyczaj mają domyślny okres ważności 24 godzin, po którym wygasają i wymagają odnowienia. Zaimplementowanie mechanizmu automatycznego odświeżania pomaga zagwarantować, że token jest prawidłowy za każdym razem, gdy aplikacja czatu jest aktywowana.
Zestaw SDK czatu usprawnia zarządzanie tokenami, automatyzując proces odświeżania po zaimplementowaniu niestandardowego modułu odświeżania tokenu dostępu. Wykonaj następujące kroki, aby skonfigurować aplikację czatu do obsługi automatycznego odświeżania tokenu:
Aby zapewnić, że aplikacja czatu utrzymuje ciągły i bezpieczny dostęp użytkowników, musisz zaimplementować warstwę usługi dedykowaną tokenom wystawiającym. Jedną z opcji jest użycie usługi Azure Functions do tego celu.
Aby utworzyć funkcję platformy Azure, zobacz artykuł Tworzenie zaufanej usługi dostępu użytkowników przy użyciu usługi Azure Functions . W tym artykule opisano sposób konfigurowania aplikacji funkcji i wdrażania niezbędnego kodu do wystawiania tokenów.
Po skonfigurowaniu funkcji platformy Azure:
Uzyskaj adres URL wystawcy tokenu w witrynie Azure Portal. Aplikacja do czatu używa tego adresu URL do żądania nowych tokenów.
Utwórz i zintegruj odświeżanie tokenu w aplikacji czatu. Ten składnik żąda nowych tokenów i inicjuje klienta czatu w celu bezproblemowego automatycznego odnawiania tokenu.
Przykładowy kod modułu odświeżania tokenu i jego integracji z klientem czatu jest dostępny w repozytorium GitHub dla przykładowych aplikacji.
Włączanie i planowanie zadań w tle
Aby aktywować i zaplanować zadania w tle w aplikacji systemu iOS, wykonaj kroki opisane w artykule Apple Using background tasks to update your app (Używanie zadań w tle do aktualizowania aplikacji).
Aby zapoznać się z praktyczną implementacją, zapoznaj się z repozytorium GitHub dla przykładowych aplikacji. W podanym przykładzie użyto BGProcessingTask
skonfigurowanego do zainicjowania nie wcześniej niż jednej minuty w przyszłości, co pokazuje, jak efektywnie pobierać dane w tle.
Rozwiązanie 2. Powiadomienie zdalne
Zdalne powiadomienie to mechanizm uruchamiania zadań w tle przez aplikacje systemu iOS w odpowiedzi na wyzwalacze zewnętrzne. Powiadomienia zdalne można używać do zadań, takich jak odświeżanie rejestracji bez interwencji użytkownika.
Aby użyć powiadomień zdalnych do uruchomienia zadania w tle:
Zaimplementuj mechanizm wyzwalania.
Na przykład możesz użyć aplikacji funkcji platformy Azure jako mechanizmu wyzwalania. Umożliwia uruchamianie kodu w odpowiedzi na różne wyzwalacze, w tym żądania HTTP, dlatego jest przydatne do inicjowania dyskretnych powiadomień wypychanych. Pamiętaj, aby zaimplementować rejestr urządzeń na końcu, aby aplikacja funkcji wiedziała, gdzie dostarczać powiadomienia.
Konfigurowanie centrum powiadomień.
Usługa Azure Notification Hubs udostępnia skalowalną infrastrukturę powiadomień wypychanych, która może wysyłać powiadomienia do dowolnej platformy (iOS, Android, Windows itd.) z dowolnego zaplecza (chmury lub środowiska lokalnego).
Możesz ponownie użyć tego samego centrum powiadomień, którego używasz do zwykłych powiadomień wypychanych. Jeśli chcesz skonfigurować nowy, zobacz dokumentację usługi Azure Notification Hubs.
Skonfiguruj aplikację funkcji platformy Azure pod kątem regularnych powiadomień.
Dostosuj aplikację funkcji, aby okresowo wysyłać powiadomienia zdalne za pośrednictwem centrum powiadomień. Te powiadomienia są przekazywane do usługi APNs i kierowane do określonego urządzenia. Aby uzyskać więcej instrukcji, zobacz Notification Hubs output binding for Azure Functions (Powiązanie danych wyjściowych usługi Notification Hubs dla usługi Azure Functions).
Obsługa powiadomień w aplikacji.
W aplikacji systemu iOS zaimplementuj metodę wystąpienia aplikacji, aby wyzwolić automatyczne odświeżanie rejestracji po otrzymaniu powiadomienia dyskretnego.
Aby uzyskać więcej informacji, zobacz artykuł Firmy Apple Konfigurowanie zdalnego serwera powiadomień.