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.
Na komputerze Mac uruchom narzędzie Keychain Access. Można go otworzyć z folderu Utilities lub innego folderu na launchpad.
Wybierz pozycję Dostęp pęku kluczy, rozwiń węzeł Asystent certyfikatu, a następnie wybierz pozycję Zażądaj certyfikatu z urzędu certyfikacji.
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.
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.
Wprowadź nazwę pliku CSR w obszarze Zapisz jako, wybierz lokalizację w obszarze Gdzie, a następnie wybierz pozycję Zapisz.
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.
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ę.
Na ekranie Rejestrowanie nowego identyfikatora wybierz przycisk radiowy Identyfikatory aplikacji. Następnie wybierz pozycję Kontynuuj.
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.
Powiadomienia wypychane: sprawdź opcję Powiadomienia wypychane w sekcji Możliwości .
Ta akcja generuje identyfikator aplikacji i żąda potwierdzenia informacji. Wybierz pozycję Kontynuuj, a następnie wybierz pozycję Zarejestruj , aby potwierdzić nowy identyfikator aplikacji.
Po wybraniu pozycji Zarejestruj nowy identyfikator aplikacji zostanie wyświetlony jako element wiersza na stronie Certyfikaty, Identyfikatory i profile .
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:
- Utwórz plik p12 , który można przekazać bezpośrednio do centrum powiadomień.
- 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ń
Przewiń w dół do zaznaczonej opcji Powiadomienia wypychane, a następnie wybierz pozycję Konfiguruj , aby utworzyć certyfikat.
Zostanie wyświetlone okno Certyfikaty SSL usługi Apple Push Notification Service. Wybierz przycisk Utwórz certyfikat w sekcji Tworzenie certyfikatu SSL.
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ń.
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.
Po utworzeniu certyfikatu przez portal wybierz przycisk Pobierz . Zapisz certyfikat i zapamiętaj lokalizację, do której został zapisany.
Certyfikat jest pobierany i zapisywany na komputerze w folderze Pobrane .
Uwaga
Domyślnie pobrany certyfikat dewelopera ma nazwę aps_development.cer.
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:
Uwaga
Mimo że nazwa w certyfikacie może być inna, nazwa będzie poprzedzona usługami Apple Development iOS Push Services.
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.
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
Zanotuj następujące szczegóły:
- Prefiks identyfikatora aplikacji (jest to identyfikator zespołu)
- Identyfikator pakietu
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.
+ Kliknij przycisk (lub przycisk Utwórz klucz), aby utworzyć nowy klucz.
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.
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.
W obszarze Klucze kliknij właśnie utworzony klucz (lub istniejący klucz, jeśli chcesz go użyć).
Zanotuj wartość Identyfikator klucza.
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
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.
Wybierz pozycję Tworzenie aplikacji systemu iOS w obszarze Programowanie jako typ profilu aprowizacji, a następnie wybierz pozycję Kontynuuj.
Następnie wybierz identyfikator aplikacji utworzony z listy rozwijanej Identyfikator aplikacji, a następnie wybierz pozycję Kontynuuj.
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:
- Jeśli widzisz pozycję Brak dostępnych certyfikatów, wybierz pozycję Utwórz certyfikat.
- W sekcji Software (Oprogramowanie) wybierz pozycję Apple Development (Programowanie firmy Apple). Następnie wybierz pozycję Kontynuuj.
- Na ekranie Tworzenie nowego certyfikatu wybierz pozycję Wybierz plik.
- Przejdź do utworzonego wcześniej certyfikatu żądania podpisania certyfikatu, wybierz go, a następnie wybierz pozycję Otwórz.
- Wybierz Kontynuuj.
- Pobierz certyfikat dewelopera i zapamiętaj lokalizację, do której został zapisany.
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.
W oknie Wybieranie certyfikatów wybierz właśnie utworzony certyfikat dewelopera. Następnie wybierz pozycję Kontynuuj.
Następnie wybierz urządzenia do użycia do testowania, a następnie wybierz pozycję Kontynuuj.
Na koniec wybierz nazwę profilu w polu Nazwa profilu aprowizacji, a następnie wybierz pozycję Generuj.
Po utworzeniu nowego profilu aprowizacji wybierz pozycję Pobierz. Zapamiętaj lokalizację, do której został zapisany.
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.
Zaloguj się w witrynie Azure Portal.
Wybierz pozycję Wszystkie usługi w menu po lewej stronie.
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.
Na stronie Notification Hubs wybierz pozycję Utwórz na pasku narzędzi.
Na karcie Podstawowe na stronie Centrum powiadomień wykonaj następujące czynności:
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ą.
Wprowadź unikatową nazwę nowej przestrzeni nazw w obszarze Szczegóły przestrzeni nazw.
Przestrzeń nazw zawiera co najmniej jedno centrum powiadomień, więc wpisz nazwę centrum w obszarze Szczegóły centrum powiadomień.
Wybierz wartość z listy rozwijanej Lokalizacja . Ta wartość określa lokalizację, w której chcesz utworzyć centrum.
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.
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.
Wybierz pozycję Utwórz.
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
Wybierz pozycję Certyfikat.
Wybierz ikonę pliku.
Wybierz wyeksportowany wcześniej plik p12, a następnie wybierz pozycję Otwórz.
W razie potrzeby określ poprawne hasło.
Wybierz tryb Piaskownica.
Wybierz pozycję Zapisz.
OPCJA 2: Używanie uwierzytelniania opartego na tokenach
Wybierz pozycję Token.
Wprowadź następujące wartości uzyskane wcześniej:
- Identyfikator klucza
- Identyfikator pakietu
- Identyfikator zespołu
- Token
Wybieranie piaskownicy
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
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).
Wprowadź nazwę aplikacji i identyfikator organizacji, kliknij przycisk Dalej, a następnie pozycję Utwórz
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.
W widoku Rozwiązanie kliknij dwukrotnie element
Entitlements.plist
i upewnij się, że opcja Włącz powiadomienia wypychane jest zaznaczona.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.
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ścihubname
iDefaultListenSharedAccessSignature
.// Azure app-specific connection string and hub path public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>"; public const string NotificationHubName = "<Azure Notification Hub Name>";
W pliku
AppDelegate.cs
dodaj następującą instrukcję using:using WindowsAzure.Messaging.NotificationHubs; using UserNotifications
Utwórz implementację elementu
MSNotificationHubDelegate
w plikuAppDelegate.cs
:public class AzureNotificationHubListener : MSNotificationHubDelegate { public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message) { } }
W pliku
AppDelegate.cs
zaktualizuj elementFinishedLaunching()
, 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; }
W
AppDelegate.cs
pliku zaimplementujAzureNotificationHubListener
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); }
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.
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: