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.

    Zrzut ekranu przedstawiający podstawową wersję powiadomienia wypychanego.

    [Wersja podstawowa]

    Zrzut ekranu przedstawiający zaawansowaną wersję powiadomień wypychanych.

    [Wersja zaawansowana]

Pobieranie kodu

Uzyskaj dostęp do przykładowego kodu dla tego samouczka w usłudze GitHub.

Wymagania wstępne

  1. Zakończ wszystkie kroki wymagań wstępnych w przewodniku Szybki start czatu

  2. 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ń.

  3. 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 clientprześ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ą.

    Zrzut ekranu przedstawiający krok 1 konfiguracji certyfikatu usługi APNS.
  • 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.

    Zrzut ekranu przedstawiający krok 2–1 konfiguracji certyfikatu usługi APNS.Zrzut ekranu przedstawiający krok 2–2 konfiguracji certyfikatu usługi APNS.
  • 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)
    Zrzut ekranu przedstawiający krok 3 konfiguracji certyfikatu usługi APNS.
  • 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.

    Zrzut ekranu przedstawiający krok 4 konfiguracji certyfikatu usługi APNS.
  • 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".

    Zrzut ekranu przedstawiający krok 5–1 konfiguracji certyfikatu usługi APNS.Zrzut ekranu przedstawiający krok 5–2 konfiguracji certyfikatu usługi APNS.
  • Krok 6. Przeciągnij plik .cer do obszaru "Wybierz plik". Następnie naciśnij pozycję "kontynuuj" w prawym górnym rogu.

    Zrzut ekranu przedstawiający krok 6 konfiguracji certyfikatu usługi APNS.
  • Krok 7. Kliknij pozycję "Pobierz" i zapisz plik na dysku lokalnym.

    Zrzut ekranu przedstawiający krok 7 konfiguracji certyfikatu usługi APNS.
  • 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.

    Zrzut ekranu przedstawiający krok 8 konfiguracji certyfikatu usługi APNS.
  • 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.

    Zrzut ekranu przedstawiający krok 9 konfiguracji certyfikatu usługi APNS.
  1. 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.

Zrzut ekranu przedstawiający włączanie powiadomień wypychanych i trybów tła w programie Xcode.
  • 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

  1. Utwórz wątek czatu z użytkownikiem A i użytkownikiem B.

  2. Pobierz repozytorium przykładowej aplikacji i wykonaj powyższe kroki w sekcji wymagań wstępnych i implementacji.

  3. Umieść ACESS_TOEKN użytkownika> A <i <ACS_RESOURCE_ENDPOINT> w pliku AppSettings.plist.

  4. Dla dwóch miejsc docelowych zasobników ustaw wartość "Włącz kod bitowy" na wartość "Nie" — AzureCommunicationChat i Trouter.

  5. 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.

  6. 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.