Samouczek: wysyłanie powiadomień wypychanych do aplikacji platformy Xamarin.iOS przy użyciu usługi Azure Notification Hubs

Omówienie

Korzystając z tego samouczka, dowiesz się, jak wysyłać powiadomienia wypychane do aplikacji dla systemu iOS przy użyciu usługi Azure Notification Hubs. Utworzysz pustą aplikację platformy Xamarin.iOS służącą do odbierania powiadomień push przy użyciu usługi Apple Push Notification service (APNs).

Po zakończeniu będzie można za pomocą centrum powiadomień wysyłać powiadomienia push do wszystkich urządzeń, na których działa ta aplikacja. Gotowy kod jest dostępny w przykładowej aplikacji NotificationHubs.

W tym samouczku utworzysz/zaktualizujesz kod, aby wykonać następujące zadania:

  • Generowanie pliku żądania podpisania certyfikatu
  • Rejestrowanie aplikacji dla usługi powiadomień wypychanych
  • Tworzenie profilu inicjowania obsługi dla aplikacji
  • Konfigurowanie centrum powiadomień dla powiadomień push systemu iOS
  • Wysyłanie testowych powiadomień wypychanych

Wymagania wstępne

  • Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

  • Najnowsza wersja środowiska Xcode

  • Urządzenie zgodne z systemem iOS 10 (lub nowszą wersją)

  • Członkostwo w programie dla deweloperów firmy Apple.

  • Visual Studio dla komputerów Mac

    Uwaga

    Ze względu na wymagania dotyczące konfiguracji powiadomień wypychanych w systemie iOS należy wdrożyć i przetestować aplikację przykładową na fizycznym urządzeniu z systemem iOS (telefonie iPhone lub tablecie iPad), a nie w symulatorze.

Wykonanie czynności opisanych w tym samouczku jest wymaganiem wstępnym dla wszystkich innych samouczków usług Notification Hubs dotyczących aplikacji platformy Xamarin.iOS.

Generowanie pliku żądania podpisania certyfikatu

Usługa Apple Push Notification Service (APNs) używa certyfikatów do uwierzytelniania powiadomień wypychanych. Wykonaj instrukcje, aby utworzyć niezbędny certyfikat powiadomień wypychanych umożliwiający ich wysyłanie i odbieranie. Więcej informacji dotyczących tych pojęć można znaleźć w oficjalnej dokumentacji usługi Apple Push Notification Service.

Wygeneruj plik żądania podpisania certyfikatu (CSR), którego firma Apple używa do generowania podpisanego certyfikatu wypychania.

  1. Na komputerze Mac uruchom narzędzie Keychain Access. Można go otworzyć z folderu Utilities lub innego folderu na launchpad.

  2. Wybierz pozycję Dostęp pęku kluczy, rozwiń węzeł Asystent certyfikatu, a następnie wybierz pozycję Zażądaj certyfikatu z urzędu certyfikacji.

    Use Keychain Access to request a new certificate

    Uwaga

    Domyślnie dostęp do pęku kluczy wybiera pierwszy element na liście. Może to być problem, jeśli jesteś w kategorii Certyfikaty , a urząd certyfikacji Apple Worldwide Developer Relations nie jest pierwszym elementem na liście. Przed wygenerowaniem żądania CSR (żądanie podpisania certyfikatu) upewnij się, że masz element inny niż klucz lub klucz Urzędu certyfikacji Relacji deweloperów firmy Apple.

  3. Wybierz swój adres e-mail użytkownika, wprowadź wartość nazwy pospolitej, upewnij się, że określono wartość Zapisano na dysku, a następnie wybierz pozycję Kontynuuj. Pozostaw pusty adres e-mail urzędu certyfikacji, ponieważ nie jest wymagany.

    Required certificate information

  4. Wprowadź nazwę pliku CSR w obszarze Zapisz jako, wybierz lokalizację w obszarze Gdzie, a następnie wybierz pozycję Zapisz.

    Choose a file name for the certificate

    Ta akcja zapisuje plik CSR w wybranej lokalizacji. Domyślna lokalizacja to Desktop. Zapamiętaj wybraną lokalizację pliku.

Następnie zarejestruj aplikację za pomocą firmy Apple, włącz powiadomienia wypychane i przekaż wyeksportowany plik CSR, aby utworzyć certyfikat wypychania.

Rejestrowanie aplikacji dla usługi powiadomień wypychanych

Aby wysyłać powiadomienia wypychane do aplikacji systemu iOS, zarejestruj aplikację w usłudze Apple, a także zarejestruj się w celu otrzymywania powiadomień wypychanych.

  1. Jeśli aplikacja nie została jeszcze zarejestrowana, przejdź do portalu aprowizacji systemu iOS w Centrum deweloperów firmy Apple. Zaloguj się do portalu przy użyciu identyfikatora Apple ID i wybierz pozycję Identyfikatory. Następnie wybierz, + aby zarejestrować nową aplikację.

    iOS Provisioning Portal App IDs page

  2. Na ekranie Rejestrowanie nowego identyfikatora wybierz przycisk radiowy Identyfikatory aplikacji. Następnie wybierz pozycję Kontynuuj.

    iOS Provisioning Portal register new ID page

  3. Zaktualizuj następujące trzy wartości dla nowej aplikacji, a następnie wybierz pozycję Kontynuuj:

    • Opis: wpisz opisową nazwę aplikacji.

    • Identyfikator pakietu: wprowadź identyfikator pakietu formularza Identyfikator organizacji.Nazwa produktu, jak wspomniano w przewodniku dystrybucji aplikacji. Wartości Identyfikator organizacji i Nazwa produktu muszą być zgodne z identyfikatorem organizacji i nazwą produktu używaną podczas tworzenia projektu Xcode. Na poniższym zrzucie ekranu wartość NotificationHubs jest używana jako identyfikator organizacji, a wartość GetStarted jest używana jako nazwa produktu. Upewnij się, że wartość Identyfikator pakietu jest zgodna z wartością w projekcie Xcode, aby program Xcode używał poprawnego profilu publikowania.

      iOS Provisioning Portal register app ID page

    • Powiadomienia wypychane: sprawdź opcję Powiadomienia wypychane w sekcji Możliwości .

      Form to register a new App ID

      Ta akcja generuje identyfikator aplikacji i żąda potwierdzenia informacji. Wybierz pozycję Kontynuuj, a następnie wybierz pozycję Zarejestruj , aby potwierdzić nowy identyfikator aplikacji.

      Confirm new App ID

      Po wybraniu pozycji Zarejestruj nowy identyfikator aplikacji zostanie wyświetlony jako element wiersza na stronie Certyfikaty, Identyfikatory i profile .

  4. Na stronie Certyfikaty, identyfikatory i profile w obszarze Identyfikatory znajdź właśnie utworzony element wiersza Identyfikator aplikacji i wybierz jego wiersz, aby wyświetlić ekran Edytowanie konfiguracji identyfikatora aplikacji.

Tworzenie certyfikatu dla usługi Notification Hubs

Certyfikat jest wymagany do włączenia centrum powiadomień do pracy z usługą APNS. Można to zrobić na jeden z dwóch sposobów:

  1. Utwórz plik p12 , który można przekazać bezpośrednio do centrum powiadomień.
  2. Utwórz plik p8 , który może służyć do uwierzytelniania opartego na tokenach (nowsze podejście).

Nowsze podejście ma wiele korzyści (w porównaniu z używaniem certyfikatów), jak opisano w artykule Uwierzytelnianie oparte na tokenach (HTTP/2) dla usługi APNS. Jednak dla obu metod podano kroki.

OPCJA 1. Tworzenie certyfikatu wypychania p12, który można przekazać bezpośrednio do centrum powiadomień

  1. Przewiń w dół do zaznaczonej opcji Powiadomienia wypychane, a następnie wybierz pozycję Konfiguruj , aby utworzyć certyfikat.

    Edit App ID page

  2. Zostanie wyświetlone okno Certyfikaty SSL usługi Apple Push Notification Service. Wybierz przycisk Utwórz certyfikat w sekcji Tworzenie certyfikatu SSL.

    Create certificate for App ID button

    Zostanie wyświetlony ekran Tworzenie nowego certyfikatu .

    Uwaga

    W tym samouczku użyto certyfikatu programistycznego, którego aplikacja używa do generowania unikatowego tokenu urządzenia. Ten sam proces jest używany podczas rejestrowania certyfikatu produkcyjnego. Należy po prostu pamiętać, aby używać tego samego typu certyfikatu podczas wysyłania powiadomień.

  3. Wybierz pozycję Wybierz plik, przejdź do lokalizacji, w której zapisano plik CSR z pierwszego zadania, a następnie kliknij dwukrotnie nazwę certyfikatu, aby go załadować. Następnie wybierz pozycję Kontynuuj.

  4. Po utworzeniu certyfikatu przez portal wybierz przycisk Pobierz . Zapisz certyfikat i zapamiętaj lokalizację, do której został zapisany.

    Generated certificate download page

    Certyfikat jest pobierany i zapisywany na komputerze w folderze Pobrane .

    Locate certificate file in the Downloads folder

    Uwaga

    Domyślnie pobrany certyfikat dewelopera ma nazwę aps_development.cer.

  5. Kliknij dwukrotnie pobrany certyfikat powiadomień wypychanych aps_development.cer. Ta akcja powoduje zainstalowanie nowego certyfikatu w narzędziu Keychain, jak przedstawiono na poniższym rysunku:

    Keychain access certificates list showing new certificate

    Uwaga

    Mimo że nazwa w certyfikacie może być inna, nazwa będzie poprzedzona usługami Apple Development iOS Push Services.

  6. W narzędziu Keychain Access kliknij prawym przyciskiem myszy nowy certyfikat powiadomień wypychanych utworzony w kategorii Certyfikaty. Wybierz pozycję Eksportuj, nadaj plikowi nazwę, wybierz format p12 , a następnie wybierz pozycję Zapisz.

    Export certificate as p12 format

    Możesz wybrać ochronę certyfikatu przy użyciu hasła, ale jest to opcjonalne. Kliknij przycisk OK , jeśli chcesz pominąć tworzenie haseł. Zanotuj nazwę pliku i lokalizację wyeksportowanego certyfikatu .p12. Są one używane do włączania uwierzytelniania za pomocą usługi APNs.

    Uwaga

    Nazwa i lokalizacja pliku p12 mogą być inne niż to, co zostało na zdjęciu w tym samouczku.

OPCJA 2: Tworzenie certyfikatu p8, który może być używany do uwierzytelniania opartego na tokenach

  1. Zanotuj następujące szczegóły:

    • Prefiks identyfikatora aplikacji (jest to identyfikator zespołu)
    • Identyfikator pakietu
  2. Po powrocie do pozycji Certyfikaty, Identyfikatory i profile kliknij pozycję Klucze.

    Uwaga

    Jeśli masz już klucz skonfigurowany dla usługi APNS, możesz ponownie użyć certyfikatu p8 pobranego bezpośrednio po jego utworzeniu. Jeśli tak, możesz zignorować kroki od 3 do 5.

  3. + Kliknij przycisk (lub przycisk Utwórz klucz), aby utworzyć nowy klucz.

  4. Podaj odpowiednią wartość nazwy klucza, a następnie zaznacz opcję Apple Push Notifications Service (APNs), a następnie kliknij przycisk Kontynuuj, a następnie zarejestruj się na następnym ekranie.

  5. Kliknij przycisk Pobierz , a następnie przenieś plik p8 (poprzedzony AuthKey_) do bezpiecznego katalogu lokalnego, a następnie kliknij przycisk Gotowe.

    Uwaga

    Pamiętaj, aby zachować plik p8 w bezpiecznym miejscu (i zapisać kopię zapasową). Po pobraniu klucza nie można go ponownie pobrać, ponieważ kopia serwera zostanie usunięta.

  6. W obszarze Klucze kliknij właśnie utworzony klucz (lub istniejący klucz, jeśli chcesz go użyć).

  7. Zanotuj wartość Identyfikator klucza.

  8. Otwórz certyfikat p8 w odpowiedniej wybranej aplikacji, takiej jak Visual Studio Code , a następnie zanotuj wartość klucza. Jest to wartość między kluczem prywatnym -----BEGIN----- a -----END PRIVATE KEY----- .

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    Uwaga

    Jest to wartość tokenu, która będzie później używana do konfigurowania usługi Notification Hub.

Na końcu tych kroków powinny być dostępne następujące informacje do późniejszego użycia w temacie Konfigurowanie centrum powiadomień przy użyciu informacji o usłudze APNs:

  • Identyfikator zespołu (zobacz krok 1)
  • Identyfikator pakietu (zobacz krok 1)
  • Identyfikator klucza (zobacz krok 7)
  • Wartość tokenu, tj. wartość klucza p8 (patrz krok 8)

Tworzenie profilu inicjowania obsługi dla aplikacji

  1. Wróć do portalu aprowizacji systemu iOS, wybierz pozycję Certyfikaty, Identyfikatory i profile, wybierz pozycję Profile z menu po lewej stronie, a następnie wybierz, + aby utworzyć nowy profil. Zostanie wyświetlony ekran Rejestrowanie nowego profilu aprowizacji.

  2. Wybierz pozycję Tworzenie aplikacji systemu iOS w obszarze Programowanie jako typ profilu aprowizacji, a następnie wybierz pozycję Kontynuuj.

    Provisioning profile list

  3. Następnie wybierz identyfikator aplikacji utworzony z listy rozwijanej Identyfikator aplikacji, a następnie wybierz pozycję Kontynuuj.

    Select the App ID

  4. W oknie Wybieranie certyfikatów wybierz certyfikat dewelopera używany do podpisywania kodu, a następnie wybierz pozycję Kontynuuj. Ten certyfikat nie jest utworzonym certyfikatem wypychania. Jeśli taki nie istnieje, musisz go utworzyć. Jeśli certyfikat istnieje, przejdź do następnego kroku. Aby utworzyć certyfikat dewelopera, jeśli taki certyfikat nie istnieje:

    1. Jeśli widzisz pozycję Brak dostępnych certyfikatów, wybierz pozycję Utwórz certyfikat.
    2. W sekcji Software (Oprogramowanie) wybierz pozycję Apple Development (Programowanie firmy Apple). Następnie wybierz pozycję Kontynuuj.
    3. Na ekranie Tworzenie nowego certyfikatu wybierz pozycję Wybierz plik.
    4. Przejdź do utworzonego wcześniej certyfikatu żądania podpisania certyfikatu, wybierz go, a następnie wybierz pozycję Otwórz.
    5. Wybierz Kontynuuj.
    6. Pobierz certyfikat dewelopera i zapamiętaj lokalizację, do której został zapisany.
  5. Wróć do strony Certyfikaty, Identyfikatory i profile , wybierz pozycję Profile z menu po lewej stronie, a następnie wybierz pozycję + , aby utworzyć nowy profil. Zostanie wyświetlony ekran Rejestrowanie nowego profilu aprowizacji.

  6. W oknie Wybieranie certyfikatów wybierz właśnie utworzony certyfikat dewelopera. Następnie wybierz pozycję Kontynuuj.

  7. Następnie wybierz urządzenia do użycia do testowania, a następnie wybierz pozycję Kontynuuj.

  8. Na koniec wybierz nazwę profilu w polu Nazwa profilu aprowizacji, a następnie wybierz pozycję Generuj.

    Choose a provisioning profile name

  9. Po utworzeniu nowego profilu aprowizacji wybierz pozycję Pobierz. Zapamiętaj lokalizację, do której został zapisany.

  10. Przejdź do lokalizacji profilu aprowizacji, a następnie kliknij go dwukrotnie, aby zainstalować go na maszynie dewelopera Xcode.

Tworzenie centrum powiadomień

W tej sekcji utworzysz centrum powiadomień i skonfigurujesz uwierzytelnianie za pomocą usługi APNs przy użyciu certyfikatu wypychania p12 lub uwierzytelniania opartego na tokenach. Jeśli chcesz użyć centrum powiadomień, które zostało już utworzone, możesz przejść do kroku 5.

  1. Zaloguj się w witrynie Azure Portal.

  2. Wybierz pozycję Wszystkie usługi w menu po lewej stronie. A screenshot showing select All Services for an existing namespace.

  3. Wpisz Notification Hubs w polu tekstowym Filtruj usługi . Wybierz ikonę gwiazdki obok nazwy usługi, aby dodać usługę do sekcji ULUBIONE w menu po lewej stronie. Wybierz pozycję Notification Hubs.

    A screenshot showing how to filter for notification hubs.

  4. Na stronie Notification Hubs wybierz pozycję Utwórz na pasku narzędzi.

    A screenshot showing how to create a new notification hub.

  5. Na karcie Podstawowe na stronie Centrum powiadomień wykonaj następujące czynności:

    1. W obszarze Subskrypcja wybierz nazwę subskrypcji platformy Azure, której chcesz użyć, a następnie wybierz istniejącą grupę zasobów lub utwórz nową.

    2. Wprowadź unikatową nazwę nowej przestrzeni nazw w obszarze Szczegóły przestrzeni nazw.

    3. Przestrzeń nazw zawiera co najmniej jedno centrum powiadomień, więc wpisz nazwę centrum w obszarze Szczegóły centrum powiadomień.

    4. Wybierz wartość z listy rozwijanej Lokalizacja . Ta wartość określa lokalizację, w której chcesz utworzyć centrum.

      Screenshot showing notification hub details.

    5. Przejrzyj opcję Strefy dostępności. Jeśli wybrano region ze strefami dostępności, pole wyboru jest zaznaczone domyślnie. Strefy dostępności jest funkcją płatną, dlatego do warstwy jest dodawana dodatkowa opłata.

    6. Wybierz opcję Odzyskiwania po awarii: Brak, Sparowany region odzyskiwania lub Elastyczny region odzyskiwania. Jeśli wybierzesz region odzyskiwania sparowanego, zostanie wyświetlony region trybu failover. Jeśli wybierzesz pozycję Elastyczny region odzyskiwania, użyj listy rozwijanej, aby wybrać z listy regionów odzyskiwania.

      Screenshot showing availability zone details.

    7. Wybierz pozycję Utwórz.

  6. Po zakończeniu wdrażania wybierz pozycję Przejdź do zasobu.

Konfigurowanie centrum powiadomień przy użyciu informacji usługi APNs

W obszarze Usługi powiadomień wybierz pozycję Apple (APNS), a następnie wykonaj odpowiednie kroki na podstawie podejścia wybranego wcześniej w sekcji Tworzenie certyfikatu dla usługi Notification Hubs .

Uwaga

Jeśli tworzysz aplikację za pomocą sklepu App Store lub profilu dystrybucji ad hoc, użyj trybu produkcyjnego dla aplikacji. Umożliwi to urządzeniu wysyłanie powiadomień wypychanych do użytkowników, którzy kupili aplikację ze sklepu.

OPCJA 1: Używanie certyfikatu wypychania p12

  1. Wybierz pozycję Certyfikat.

  2. Wybierz ikonę pliku.

  3. Wybierz wyeksportowany wcześniej plik p12, a następnie wybierz pozycję Otwórz.

  4. W razie potrzeby określ poprawne hasło.

  5. Wybierz tryb Piaskownica.

    Configure APNs certification in Azure portal

  6. Wybierz pozycję Zapisz.

OPCJA 2: Używanie uwierzytelniania opartego na tokenach

  1. Wybierz pozycję Token.

  2. Wprowadź następujące wartości uzyskane wcześniej:

    • Identyfikator klucza
    • Identyfikator pakietu
    • Identyfikator zespołu
    • Token
  3. Wybieranie piaskownicy

  4. Wybierz pozycję Zapisz.

Centrum powiadomień skonfigurowano teraz za pomocą usługi APNs. Masz również parametry połączenia do zarejestrowania aplikacji i wysyłania powiadomień wypychanych.

Łączenie aplikacji z centrum powiadomień

Tworzenie nowego projektu

  1. W programie Visual Studio utwórz nowy projekt dla systemu iOS i wybierz szablon Single View Application (Aplikacja z jednym widokiem), a następnie kliknij przycisk Next (Dalej).

    Visual Studio - Select Application Type

  2. Wprowadź nazwę aplikacji i identyfikator organizacji, kliknij przycisk Dalej, a następnie pozycję Utwórz

  3. W widoku rozwiązania kliknij dwukrotnie plik Info.plist i w obszarze Tożsamość upewnij się, że identyfikator pakietu jest zgodny z użytym podczas tworzenia profilu aprowizacji. W obszarze Podpisywanie upewnij się, że konto dewelopera jest wybrane w obszarze Zespół, opcja „Automatically manage signing” (Automatycznie zarządzaj podpisywaniem) jest zaznaczona, a Twój certyfikat podpisywania i profil aprowizacji zostały automatycznie wybrane.

    Visual Studio- iOS App Config

  4. W widoku Rozwiązanie kliknij dwukrotnie element Entitlements.plist i upewnij się, że opcja Włącz powiadomienia wypychane jest zaznaczona.

    Visual Studio- iOS Entitlements Config

  5. Dodaj pakiet składnika Azure Messaging. W widoku Solution kliknij prawym przyciskiem myszy projekt i wybierz polecenie Dodaj>Dodawanie pakietów NuGet. Wyszukaj pakiet Xamarin.Azure.NotificationHubs.iOS i dodaj go do projektu.

  6. Dodaj nowy plik do klasy, nadaj mu nazwę Constants.cs, dodaj następujące zmienne i zastąp symbole zastępcze literału ciągu przy użyciu zanotowanych wcześniej wartości hubname i DefaultListenSharedAccessSignature.

    // Azure app-specific connection string and hub path
    public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>";
    public const string NotificationHubName = "<Azure Notification Hub Name>";
    
  7. W pliku AppDelegate.cs dodaj następującą instrukcję using:

    using WindowsAzure.Messaging.NotificationHubs;
    using UserNotifications
    
  8. Utwórz implementację elementu MSNotificationHubDelegate w pliku AppDelegate.cs:

    public class AzureNotificationHubListener : MSNotificationHubDelegate
    {
        public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
        {
    
        }
    }
    
  9. W pliku AppDelegate.cs zaktualizuj element FinishedLaunching(), aby był zgodny z następującym kodem:

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        // Set the Message listener
        MSNotificationHub.SetDelegate(new AzureNotificationHubListener());
    
        // Start the SDK
        MSNotificationHub.Start(ListenConnectionString, NotificationHubName);
    
        return true;
    }
    
  10. W AppDelegate.cspliku zaimplementuj AzureNotificationHubListener metodę DidReceivePushNotification dla klasy :

    public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
    {
        // This sample assumes { aps: { alert: { title: "Hello", body: "World" } } }
        var alertTitle = message.Title ?? "Notification";
        var alertBody = message.Body;
    
        var myAlert = UIAlertController.Create(alertTitle, alertBody, UIAlertControllerStyle.Alert);
        myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
        UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null);
    }
    
  11. Uruchom aplikację na urządzeniu.

Wysyłanie testowych powiadomień wypychanych

Odbieranie powiadomień w aplikacji możesz przetestować za pomocą opcji Wysyłanie testowe w witrynie Azure Portal. Powoduje to wysłanie testowego powiadomienia push na urządzenie.

Azure portal - Test Send

Powiadomienia wypychane są zwykle wysyłane za pośrednictwem usługi wewnętrznej bazy danych, takiej jak Mobile Apps czy ASP.NET, przy użyciu zgodnej biblioteki. Jeśli biblioteka nie jest dostępna w danym zapleczu, powiadomienia można również wysyłać bezpośrednio za pomocą interfejsu API REST.

Następne kroki

W tym samouczku wysłano wyemitowane powiadomienia do wszystkich urządzeń z systemem iOS zarejestrowanych w zapleczu. Aby dowiedzieć się, jak wysyłać powiadomienia push do konkretnych urządzeń z systemem iOS, przejdź do następującego samouczka: