Włączanie powiadomień wypychanych w aplikacji do czatu
Ten samouczek przeprowadzi Cię przez proces włączania powiadomień wypychanych w aplikacji systemu iOS przy użyciu zestawu SDK czatu usługi Azure Communication.
Powiadomienia wypychane ostrzegają klientów przychodzących wiadomości w wątku czatu w sytuacjach, w których aplikacja mobilna nie działa na pierwszym planie. Usługi Azure Communication Services obsługują dwie wersje powiadomień wypychanych.
Basic Version
: Użytkownik będzie mógł zobaczyć numer znaczka 1 na ikonie aplikacji, otrzymać dźwięk powiadomienia i zobaczyć baner alertu wyskakującego.Advanced Version
: z wyjątkiem funkcji obsługiwanych w wersji podstawowej firma Contoso będzie mogła dostosować sekcję podglądu tytułu i komunikatów na banerze alertu.[Wersja podstawowa]
[Wersja zaawansowana]
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 czatu
Konfiguracja usługi ANH
Utwórz centrum powiadomień Azure w ramach tej samej subskrypcji co zasób usług komunikacyjnych i połącz Centrum powiadomień z zasobem usług Komunikacyjnych. Zobacz Aprowizowanie centrum powiadomień.Konfiguracja certyfikatu usługi APNS
W tym miejscu zalecamy utworzenie certyfikatu APNS p12 i ustawienie go w centrum powiadomień.If you are not a Microsoft internal client
, wykonaj krok 1 do kroku 9.
If you are a Microsoft internal client
prześlij bilet tutaj i podaj identyfikator pakietu aplikacji, aby uzyskać certyfikat p12. Po otrzymaniu ważnego certyfikatu wykonaj krok 9.
Krok 1. Zaloguj się do portalu deweloperów firmy Apple. Przejdź do
Certificates, IDs & Profiles > Identifiers > App IDs
strony i kliknij identyfikator aplikacji skojarzony z twoją aplikacją.Krok 2. Na ekranie identyfikatora aplikacji sprawdź
Capabilities > Push Notifications
. Kliknij przycisk Zapisz i odpowiedz "Potwierdź" w wyświetlonym oknie dialogowym Modyfikowanie możliwości aplikacji.Krok 3. Na tej samej stronie kliknij pozycję
Capabilities > Push Notifications > Configure
. Kliknij jeden z następujących przycisków:- Tworzenie certyfikatu > SSL programowania (na potrzeby testowania powiadomień wypychanych podczas tworzenia aplikacji dla systemu iOS)
- Produkcyjny certyfikat SSL — tworzenie certyfikatu > (na potrzeby wysyłania powiadomień wypychanych w środowisku produkcyjnym)
Krok 4. Następnie nastąpi przejście do poniższej strony. W tym miejscu przekażesz żądanie podpisania certyfikatu (CSR). Wykonaj następny krok, aby utworzyć csr.
Krok 5. Na nowej karcie przeglądarki postępuj zgodnie z tą stroną pomocy, aby utworzyć plik CSR i zapisać go jako "App name.cer".
Krok 6. Przeciągnij plik .cer do obszaru "Wybierz plik". Następnie naciśnij pozycję "kontynuuj" w prawym górnym rogu.
Krok 7. Kliknij pozycję "Pobierz" i zapisz plik na dysku lokalnym.
Krok 8. Otwórz pobrany plik .cer; zostanie otwarty dostęp pęku kluczy. Wybierz certyfikat, kliknij prawym przyciskiem myszy i wyeksportuj certyfikat w formacie p12.
Krok 9. Przejdź do centrum powiadomień, kliknij pozycję "Apple (APNS)" w obszarze Ustawienia i wybierz pozycję "Certyfikat" w obszarze Tryb uwierzytelniania. Wybierz również tryb aplikacji w zależności od potrzeb. Następnie przekaż właśnie utworzony plik p12.
- Konfiguracja programu XCode
W programie XCode przejdź do strony
Signing & Capabilities
. Dodaj możliwość, wybierając pozycję "+ Capability", a następnie wybierz pozycję "Push Notifications".Dodaj kolejną możliwość, wybierając pozycję "+ Możliwości", a następnie wybierz pozycję "Tryby w tle". Wybierz również pozycję "Powiadomienia zdalne" w obszarze Tryby tła.
- Ustaw wartość "Wymagaj tylko interfejsu API Sejf rozszerzenia aplikacji" jako "Nie" dla elementu docelowego zasobnika — AzureCore
Implementacja
1 — Wersja podstawowa
Jeśli chcesz zaimplementować podstawową wersję powiadomienia wypychanego, musisz zarejestrować się w celu otrzymywania powiadomień zdalnych za pomocą usługi APNS (Apple Push Notification Service). Zapoznaj się z przykładowym kodem , aby zobaczyć powiązaną implementację w pliku AppDelegate.swift
.
2 — Wersja zaawansowana
Jeśli chcesz zaimplementować zaawansowaną wersję powiadomienia wypychanego, musisz uwzględnić następujące elementy w aplikacji. Przyczyną jest to, że szyfrujemy zawartość klienta (np. zawartość wiadomości czatu, nazwę wyświetlaną nadawcy itp.) w ładunku powiadomień wypychanych i wymaga obejścia tego problemu po twojej stronie.
- Element 1. Magazyn danych dla kluczy szyfrowania
Najpierw należy utworzyć trwały magazyn danych na urządzeniu z systemem iOS. Ten magazyn danych powinien mieć możliwość udostępniania danych między aplikacjami głównymi i rozszerzeniami aplikacji (zobacz element 2, aby uzyskać więcej informacji na temat rozszerzenia aplikacji — rozszerzenia usługi powiadomień).
W naszym przykładowym kodzie wybierzemy pozycję "Grupa aplikacji" jako magazyn danych. Poniżej przedstawiono sugerowane kroki tworzenia i używania grupy aplikacji:
Wykonaj kroki opisane w artykule Dodawanie możliwości dodawania funkcji Grupy aplikacji do celów aplikacji — zarówno głównej aplikacji, jak i rozszerzenia usługi powiadomień (zapoznaj się z elementem 2, aby dowiedzieć się, jak utworzyć rozszerzenie usługi powiadomień).
Aby skonfigurować grupę aplikacji, wykonaj również kroki opisane w tym oficjalnym dokumentie firmy Apple. Upewnij się, że główna aplikacja i rozszerzenie aplikacji mają taką samą nazwę kontenera.
- Element 2. Rozszerzenie usługi powiadomień
Po drugie należy zaimplementować "Rozszerzenie usługi powiadomień" w pakiecie z główną aplikacją. Służy to do odszyfrowywania ładunku powiadomień wypychanych podczas jego odbierania.
Przejdź do tego oficjalnego dokumentu firmy Apple. Wykonaj kroki "Dodawanie rozszerzenia aplikacji usługi do projektu" i "Implementowanie metod obsługi rozszerzenia".
Zwróć uwagę, że w kroku "Implementowanie metod obsługi rozszerzenia" firma Apple udostępnia przykładowy kod do odszyfrowywania danych i będziemy postępować zgodnie z ogólną strukturą. Jednak ponieważ do odszyfrowywania używamy zestawu SDK czatów, musimy zastąpić część rozpoczynającą się od “// Try to decode the encrypted message data.”
naszej dostosowanej logiki. Zapoznaj się z przykładowym kodem , aby zobaczyć powiązaną implementację w pliku NotificationService.swift
.
- Element 3. Implementacja protokołu PushNotificationKeyStorage
Po trzecie, PushNotificationKeyStorage
jest wymagany dla wersji zaawansowanej. Jako użytkownik zestawu SDK możesz użyć domyślnej AppGroupPushNotificationKeyStorage
klasy udostępnionej przez zestaw SDK czatu. Jeśli nie używasz App Group
magazynu kluczy lub chcesz dostosować metody magazynu kluczy, utwórz własną klasę zgodną z protokołem PushNotificationKeyStorage.
W przypadku metody PushNotificationKeyStorage definiuje dwie metody: onPersistKey(encryptionKey:expiryTime)
i onRetrieveKeys() -> [String]
.
Pierwsza metoda służy do utrwalania klucza szyfrowania w magazynie urządzenia z systemem IOS użytkownika. Zestaw SDK czatu ustawi 45 minut jako czas wygaśnięcia klucza szyfrowania. Jeśli chcesz, aby powiadomienie wypychane działało dłużej niż 45 minut, musisz zaplanować wywołanie chatClient.startPushNotifications(deviceToken:)
stosunkowo często (np. co 15 minut), aby nowy klucz szyfrowania mógł zostać zarejestrowany przed wygaśnięciem starego klucza.
Druga metoda służy do pobierania prawidłowych kluczy, które były wcześniej przechowywane. Masz elastyczność, aby zapewnić dostosowanie na podstawie wybranego magazynu danych (element 1).
W rozszerzeniu protokołu zestaw SDK czatu udostępnia implementację decryptPayload(notification:) -> PushNotificationEvent
metody, z której można korzystać. Zapoznaj się z przykładowym kodem , aby zobaczyć powiązaną implementację w pliku NotificationService.swift
.
Testowanie
Utwórz wątek czatu z użytkownikiem A i użytkownikiem B.
Pobierz repozytorium przykładowej aplikacji i wykonaj powyższe kroki w sekcji wymagań wstępnych i implementacji.
Umieść ACESS_TOEKN użytkownika> A <i <ACS_RESOURCE_ENDPOINT> w pliku
AppSettings.plist
.Dla dwóch miejsc docelowych zasobników ustaw wartość "Włącz kod bitowy" na wartość "Nie" — AzureCommunicationChat i Trouter.
Podłącz urządzenie z systemem iOS do komputera Mac, uruchom program i kliknij pozycję "zezwalaj" po wyświetleniu monitu o autoryzowanie powiadomień wypychanych na urządzeniu.
Jako użytkownik B wyślij wiadomość czatu. Użytkownik A powinien mieć możliwość odbierania powiadomienia wypychanego na urządzeniu z systemem iOS.
Automatyczne odnawianie 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 miejscu proponujemy dwa rozwiązania zgodne z oficjalnymi wytycznymi firmy Apple. Należy pamiętać, że skuteczność obu rozwiązań może mieć wpływ na różne czynniki, takie jak stan baterii urządzenia, warunki sieciowe i ograniczenia specyficzne dla systemu iOS, które mogą mieć wpływ na zdolność aplikacji do wykonywania zadań w tle, które są określone w witrynie Apple WWDC Video i oficjalnej wiki firmy Apple. Zalecamy zaimplementowanie obu rozwiązań razem w celu zwiększenia ich skuteczności.
Rozwiązanie 1. Zadania w tle
Zadania w tle oferują sposób wykonywania działań nawet wtedy, gdy aplikacja nie znajduje się na pierwszym planie. Implementując zadanie w tle, aplikacja może zażądać dodatkowego czasu na ukończenie określonego zadania, takiego jak odnowienie rejestracji powiadomień wypychanych. Poniżej przedstawiono sposób korzystania z zadań w tle na potrzeby odnawiania rejestracji:
Krok 1. Konfigurowanie automatycznego odświeżania tokenu dostępu użytkownika
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 godziny), po którym wygasają, wymagając odnowienia. Zaimplementowanie mechanizmu automatycznego odświeżania gwarantuje, że token jest zawsze 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ę do czatu w celu obsługi automatycznego odświeżania tokenu:
1.1 Ustanów warstwę usługi dla wystawiania tokenów
Aby upewnić się, ż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 wykorzystanie usługi Azure Functions do tego celu.
Aby utworzyć funkcję platformy Azure, zobacz Tworzenie zaufanej usługi dostępu użytkowników przy użyciu usługi Azure Functions. W tym przewodniku opisano sposób konfigurowania aplikacji funkcji i wdrażania kodu potrzebnego do wystawiania tokenów.
1.2 Implementowanie odświeżania tokenu w aplikacji czatu
Po skonfigurowaniu funkcji platformy Azure:
Uzyskaj adres URL wystawcy tokenu w witrynie Azure Portal, której aplikacja czatu używa do żądania nowych tokenów.
Utwórz i zintegruj odświeżanie tokenu w aplikacji czatu. Implementuje to składnik modułu odświeżania tokenów, który żąda nowych tokenów i inicjuje klienta czatu za pomocą tego składnika w celu bezproblemowego automatycznego odnawiania tokenu.
Aby uzyskać łatwą dokumentację i implementację, przykładowy kod modułu odświeżania tokenu i jego integracji z klientem czatu jest dostępny w naszym przykładowym repozytorium aplikacji .
Krok 2. Postępuj zgodnie z instrukcjami firmy Apple, aby włączyć i zaplanować zadania w tle
Aby aktywować i zaplanować zadania w tle w aplikacji, należy przestrzegać wytycznych firmy Apple zgodnie z opisem w dokumentacji dotyczącej używania zadań w tle do aktualizowania aplikacji. Ten przewodnik zawiera kompleksowe kroki integracji funkcji zadań w tle z aplikacją systemu iOS.
Aby zapoznać się z praktyczną implementacją, zapoznaj się z naszym przykładowym repozytorium aplikacji. W podanym przykładzie używamy konfiguracji BGProcessingTask do zainicjowania nie wcześniej niż 1 minuty w przyszłości, pokazując, jak efektywnie pobierać dane w tle.
Rozwiązanie 2. Powiadomienie zdalne
Zdalne powiadomienie to mechanizm dla aplikacji systemu iOS do wykonywania zadań w tle w odpowiedzi na wyzwalacze zewnętrzne. Mogą być one używane do zadań, takich jak odświeżanie rejestracji bez interwencji użytkownika. Oto jak używać powiadomień zdalnych do uruchamiania zadania w tle:
1.Implementowanie mechanizmu wyzwalania
Możesz na przykład użyć aplikacji funkcji platformy Azure jako mechanizmu wyzwalania. Umożliwia uruchamianie kodu w odpowiedzi na różne wyzwalacze, w tym żądania HTTP, co czyni go idealnym rozwiązaniem do inicjowania dyskretnych powiadomień wypychanych. Pamiętaj, aby zaimplementować rejestr urządzeń na końcu, aby aplikacja funkcji wiedziała, gdzie dostarczać powiadomienia.
2.Konfigurowanie centrum powiadomień platformy Azure
Usługa Azure Notification Hub udostępnia skalowalną, łatwą w użyciu infrastrukturę powiadomień wypychanych, która może wysyłać powiadomienia do dowolnej platformy (iOS, Android, Windows itd.) z dowolnego zaplecza (chmury lub środowiska lokalnego). Zarządzanie powiadomieniami i wypychanie ich do urządzeń jest niezbędne. 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.
3.Konfigurowanie aplikacji funkcji platformy Azure pod kątem regularnych powiadomień
Dostosuj aplikację funkcji platformy Azure, aby okresowo wysyłać powiadomienia zdalne za pośrednictwem usługi Azure Notification Hub. Te powiadomienia są przekazywane do usługi Apple Push Notification Service (APNS) i kierowane do określonego urządzenia. Aby uzyskać więcej instrukcji, zobacz Functions-bindings-notification-hubs.
4.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.