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.

    Screenshot of basic version of push notification.

    [Wersja podstawowa]

    Screenshot of advanced version of push notification.

    [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ą.

    Screenshot of APNS Cert Configuration step 1.
  • 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.

    Screenshot of APNS Cert Configuration step 2-1.Screenshot of APNS Cert Configuration step 2-2.
  • 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)
    Screenshot of APNS Cert Configuration step 3.
  • 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.

    Screenshot of APNS Cert Configuration step 4.
  • Krok 5. Na nowej karcie przeglądarki postępuj zgodnie z tą stroną pomocy, aby utworzyć csr i zapisać plik jako "Nazwa aplikacji.cer".

    Screenshot of APNS Cert Configuration step 5 - 1.Screenshot of APNS Cert Configuration step 5 - 2.
  • Krok 6. Przeciągnij plik cer do obszaru "Wybierz plik". Następnie naciśnij pozycję "kontynuuj" w prawym górnym rogu.

    Screenshot of APNS Cert Configuration step 6.
  • Krok 7. Kliknij pozycję "Pobierz" i zapisz plik na dysku lokalnym.

    Screenshot of APNS Cert Configuration step 7.
  • 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.

    Screenshot of APNS Cert Configuration step 8.
  • 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.

    Screenshot of APNS Cert Configuration step 9.
  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.

Screenshot of Enable Push Notifications and Background modes in 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.