Samouczek: wysyłanie powiadomień wypychanych do aplikacji platformy Xamarin.Android przy użyciu usługi Notification Hubs
Omówienie
Uwaga
Aby uzyskać informacje na temat wycofywania i migracji usługi Firebase Cloud Messaging, zobacz Migracja usługi Google Firebase Cloud Messaging.
Korzystając z tego samouczka, dowiesz się, jak wysyłać powiadomienia wypychane do aplikacji platformy Xamarin.Android przy użyciu usługi Azure Notification Hubs. Utworzysz pustą aplikację dla platformy Xamarin.Android służącą do odbierania powiadomień push przy użyciu usługi Firebase Cloud Messaging (FCM). Za pomocą centrum powiadomień będzie można 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 wykonasz następujące kroki:
- Tworzenie projektu Firebase i włączanie usługi Firebase Cloud Messaging
- Tworzenie centrum powiadomień
- Tworzenie aplikacji platformy Xamarin.Android i łączenie jej z centrum powiadomień
- Wysyłanie powiadomień testowych z witryny Azure Portal
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
- Program Visual Studio z platformą Xamarin w systemie Windows lub program Visual Studio dla komputerów Mac w systemie OS X.
- Aktywne konto Google
Tworzenie projektu Firebase i włączanie usługi Firebase Cloud Messaging
Zaloguj się do konsoli Firebase. Utwórz nowy projekt Firebase, jeśli jeszcze go nie masz.
Po utworzeniu projektu wybierz pozycję Dodaj Firebase do swojej aplikacji dla systemu Android.
Na stronie Dodawanie bazy danych Firebase do aplikacji systemu Android wykonaj następujące kroki:
W polu Nazwa pakietu systemu Android wprowadź nazwę pakietu. Na przykład:
tutorials.tutoria1.xamarinfcmapp
.Wybierz pozycję Zarejestruj aplikację.
Wybierz pozycję Pobierz google-services.json. Następnie zapisz plik w folderze projektu i wybierz pozycję Dalej. Jeśli projekt programu Visual Studio nie został jeszcze utworzony, możesz wykonać ten krok po utworzeniu projektu.
Wybierz Dalej.
Wybierz pozycję Pomiń ten krok.
W konsoli usługi Firebase wybierz koło zębate dla projektu. Następnie wybierz pozycję Ustawienia projektu.
Jeśli nie pobrano pliku google-services.json , możesz go pobrać na tej stronie.
Przejdź do karty Cloud Messaging (Obsługa komunikatów w chmurze) u góry strony. Skopiuj i zapisz klucz serwera do późniejszego użycia. Ta wartość służy do konfigurowania centrum powiadomień.
Tworzenie centrum powiadomień
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 ustawień usługi GCM/FCM dla centrum powiadomień
Wybierz pozycję Google (GCM/FCM)/ w sekcji Ustawienia w menu po lewej stronie.
Wprowadź klucz serwera zanotowany w konsoli Google Firebase.
Wybierz pozycję Zapisz na pasku narzędzi.
Centrum powiadomień jest skonfigurowane do pracy z usługą FCM i uzyskano parametry połączenia do rejestrowania aplikacji zarówno w celu odbierania, jak i wysyłania powiadomień wypychanych.
Tworzenie aplikacji platformy Xamarin.Android i łączenie jej z centrum powiadomień
Tworzenie projektu programu Visual Studio i dodawanie pakietów NuGet
Uwaga
Kroki opisane w tym samouczku dotyczą programu Visual Studio 2017.
W programie Visual Studio otwórz menu Plik, wybierz pozycję Nowy, a następnie wybierz pozycję Projekt. W oknie Nowy projekt wykonaj następujące kroki:
Rozwiń węzeł Zainstalowane, Visual C#, a następnie kliknij pozycję Android.
Z listy wybierz pozycję Aplikacja systemu Android (Xamarin ).
Wprowadź nazwę dla projektu.
Wybierz lokalizację projektu.
Wybierz OK
W oknie dialogowym Nowa aplikacja systemu Android wybierz pozycję Pusta aplikacja i wybierz przycisk OK.
W oknie Eksploratora rozwiązań rozwiń węzeł Właściwości i kliknij pozycję AndroidManifest.xml. Zaktualizuj nazwę pakietu tak, aby pasowała do nazwy pakietu wprowadzonej podczas dodawania usługi Firebase Cloud Messaging do projektu w konsoli Google Firebase Console.
Ustaw docelową wersję systemu Android dla projektu na Android 10.0 , wykonując następujące kroki:
- Kliknij projekt prawym przyciskiem myszy i wybierz polecenie Właściwości.
- W polu Kompiluj przy użyciu wersji systemu Android: (platforma docelowa) wybierz pozycję Android 10.0.
- Wybierz pozycję Tak w polu komunikatu, aby kontynuować zmianę platformy docelowej.
Dodaj wymagane pakiety NuGet do projektu, wykonując następujące kroki:
Kliknij projekt prawym przyciskiem myszy i wybierz pozycję Zarządzaj pakietami NuGet.
Przejdź do karty Zainstalowane , wybierz pozycję Xamarin.Android.Support.Design, a następnie wybierz pozycję Aktualizuj w okienku po prawej stronie, aby zaktualizować pakiet do najnowszej wersji.
Przejdź do karty Przeglądaj . Wyszukaj pozycję Xamarin.GooglePlayServices.Base. Na liście wyników wybierz pozycję Xamarin.GooglePlayServices.Base. Następnie wybierz pozycję Zainstaluj.
W oknie Menedżera pakietów NuGet wyszukaj pozycję Xamarin.Firebase.Messaging. Na liście wyników wybierz pozycję Xamarin.Firebase.Messaging. Następnie wybierz pozycję Zainstaluj.
Teraz wyszukaj pozycję Xamarin.Azure.NotificationHubs.Android. Na liście wyników wybierz pozycję Xamarin.Azure.NotificationHubs.Android. Następnie wybierz pozycję Zainstaluj.
Dodawanie pliku JSON usług Google
Skopiuj plik
google-services.json
pobrany z konsoli Google Firebase Console do folderu projektu.Dodaj plik
google-services.json
do projektu.Wybierz plik
google-services.json
w oknie Eksploratora rozwiązań.W okienku Właściwości ustaw GoogleServicesJson jako akcję kompilacji. Jeśli nie widzisz opcji GoogleServicesJson, zamknij program Visual Studio, uruchom go ponownie, otwórz projekt i spróbuj ponownie.
Konfigurowanie centrów powiadomień w projekcie
Rejestrowanie w usłudze Firebase Cloud Messaging
Jeśli migrujesz z usługi Google Cloud Messaging do bazy danych Firebase, plik projektu
AndroidManifest.xml
może zawierać nieaktualną konfigurację usługi GCM, co może spowodować duplikowanie powiadomień. Edytuj plik i usuń następujące wiersze wewnątrz<application>
sekcji, jeśli istnieją:<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" /> <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="${applicationId}" /> </intent-filter> </receiver>
Dodaj następujące instrukcje przed elementem aplikacji .
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
Zbierz następujące informacje dotyczące aplikacji dla systemu Android i centrum powiadomień:
- Listen connection string (Parametry połączenia nasłuchiwania): na pulpicie nawigacyjnym w witrynie Azure Portal kliknij pozycję Wyświetl parametry połączeń. Skopiuj parametry połączenia
DefaultListenSharedAccessSignature
dla tej wartości. - Nazwa centrum: nazwa centrum z witryny Azure Portal. Na przykład moje_centrum_powiadomien_2.
- Listen connection string (Parametry połączenia nasłuchiwania): na pulpicie nawigacyjnym w witrynie Azure Portal kliknij pozycję Wyświetl parametry połączeń. Skopiuj parametry połączenia
W oknie Eksploratora rozwiązań kliknij prawym przyciskiem myszy projekt, wskaż pozycję Dodaj i wybierz pozycję Klasa.
Utwórz klasę
Constants.cs
w projekcie Xamarin i zdefiniuj w tej klasie następujące wartości stałych. Zastąp tekst zastępczy własnymi wartościami.public static class Constants { public const string ListenConnectionString = "<Listen connection string>"; public const string NotificationHubName = "<hub name>"; }
Dodaj następujące instrukcje using w pliku
MainActivity.cs
:using WindowsAzure.Messaging.NotificationHubs;
Dodaj następujące właściwości do klasy MainActivity:
internal static readonly string CHANNEL_ID = "my_notification_channel";
W pliku
MainActivity.cs
dodaj następujący kod do elementuOnCreate
po elemenciebase.OnCreate(savedInstanceState)
:// Listen for push notifications NotificationHub.SetListener(new AzureListener()); // Start the SDK NotificationHub.Start(this.Application, HubName, ConnectionString);
Dodaj klasę o nazwie
AzureListener
do projektu.Dodaj następujące instrukcje using w pliku
AzureListener.cs
.using Android.Content; using WindowsAzure.Messaging.NotificationHubs;
Dodaj następujące elementy powyżej deklaracji klasy i odziedzicz klasę
Java.Lang.Object
i zaimplementuj elementINotificationListener
:public class AzureListener : Java.Lang.Object, INotificationListener
Dodaj następujący kod wewnątrz
AzureListener
klasy, aby przetworzyć odebrane komunikaty.public void OnPushNotificationReceived(Context context, INotificationMessage message) { var intent = new Intent(this, typeof(MainActivity)); intent.AddFlags(ActivityFlags.ClearTop); var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot); var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID); notificationBuilder.SetContentTitle(message.Title) .SetSmallIcon(Resource.Drawable.ic_launcher) .SetContentText(message.Body) .SetAutoCancel(true) .SetShowWhen(false) .SetContentIntent(pendingIntent); var notificationManager = NotificationManager.FromContext(this); notificationManager.Notify(0, notificationBuilder.Build()); }
Skompiluj projekt.
Uruchom aplikację na urządzeniu lub załadowanym emulatorze.
Wysyłanie powiadomienia testowego z witryny Azure Portal
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 w usłudze zaplecza, takiej jak Mobile Services czy ASP.NET, za pośrednictwem zgodnej biblioteki. Jeśli biblioteka nie jest dostępna dla zaplecza, możesz również użyć interfejsu API REST bezpośrednio do wysyłania komunikatów powiadomień.
Następne kroki
W tym samouczku wysłano wyemitowane powiadomienia do wszystkich urządzeń z systemem Android zarejestrowanych w zapleczu. Aby dowiedzieć się, jak wysyłać powiadomienia push do konkretnych urządzeń z systemem Android, przejdź do następującego samouczka: