Självstudie: Skicka push-meddelanden till Xamarin.Android-appar med Notification Hubs
Översikt
Kommentar
Information om utfasning och migrering av Firebase Cloud Messaging finns i Google Firebase Cloud Messaging-migrering.
I den här självstudiekursen beskrivs hur du använder Azure Notification Hubs för att skicka push-meddelanden till en Xamarin.Android-app. Du skapar en tom Xamarin.Android-app som tar emot push-meddelanden via Firebase Cloud Messaging (FCM). Du använder meddelandehubben för att sända push-meddelanden till alla enheter som kör appen. Den färdiga koden finns tillgänglig i exemplet NotificationHubs-app.
I den här självstudien gör du följande:
- Skapa ett Firebase-projekt och aktivera Firebase Cloud Messaging
- Skapa en meddelandehubb
- Skapa en Xamarin.Android-app och anslut den till meddelandehubben
- Skicka testmeddelanden från Azure Portal
Förutsättningar
- Azure-prenumeration. Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt Azure-konto innan du börjar.
- Visual Studio med Xamarin på Windows eller Visual Studio för Mac på OS X.
- Aktivt Google-konto
Skapa ett Firebase-projekt och aktivera Firebase Cloud Messaging
Logga in på Firebase-konsolen. Skapa ett nytt Firebase-projekt om du inte redan har ett.
När du har skapat ett projekt väljer du Lägg till Firebase till din Android-app.
På sidan Lägg till Firebase i din Android-app utför du följande steg:
För Android-paketnamnet anger du ett namn för ditt paket. Exempel:
tutorials.tutorial1.xamarinfcmapp
.Välj Registrera app.
Välj Ladda ned google-services.json. Spara sedan filen i mappen för projektet och välj Nästa. Om du inte har skapat Visual Studio-projektet än kan du göra det här steget när du har skapat projektet.
Välj Nästa.
Välj Hoppa över det här steget.
Välj kugghjulet för ditt projekt i Firebase-konsolen. Välj sedan Projektinställningar.
Om du inte har laddat ned filen google-services.json kan du ladda ned den på den här sidan.
Växla till fliken Cloud Messaging längst upp. Kopiera och spara servernyckeln för senare användning. Du använder det här värdet för att konfigurera meddelandehubben.
Skapa en meddelandehubb
Logga in på Azure-portalen.
Välj Alla tjänster på den vänstra menyn.
Skriv Notification Hubs i textrutan Filtertjänster . Välj stjärnikonen bredvid tjänstnamnet för att lägga till tjänsten i avsnittet FAVORITER på den vänstra menyn. Välj Notification Hubs.
På sidan Notification Hubs väljer du Skapa i verktygsfältet.
Gör följande på fliken Grundläggande på sidan Notification Hub:
I Prenumeration väljer du namnet på den Azure-prenumeration som du vill använda och väljer sedan en befintlig resursgrupp eller skapar en ny.
Ange ett unikt namn för det nya namnområdet i Namnområdesinformation.
Ett namnområde innehåller en eller flera meddelandehubbar, så skriv ett namn för hubben i Meddelandehubbens information.
Välj ett värde i listrutan Plats . Det här värdet anger den plats där du vill skapa hubben.
Granska alternativet Tillgänglighetszoner. Om du väljer en region som har tillgänglighetszoner markeras kryssrutan som standard. Tillgänglighetszoner är en betald funktion, så en extra avgift läggs till på din nivå.
Välj ett alternativ för haveriberedskap : Ingen, Länkad återställningsregion eller Flexibel återställningsregion. Om du väljer Länkad återställningsregion visas redundansregionen. Om du väljer Flexibel återställningsregion använder du listrutan för att välja från en lista över återställningsregioner.
Välj Skapa.
När distributionen är klar väljer du Gå till resurs.
Konfigurera GCM/FCM-inställningar för meddelandehubben
Välj Google (GCM/FCM)/ i avsnittet Inställningar på den vänstra menyn.
Ange servernyckeln som du antecknade från Google Firebase Console.
Välj Spara i verktygsfältet.
Meddelandehubben har konfigurerats för att fungera med FCM och du har anslutningssträngar för att registrera din app för att både ta emot meddelanden och skicka push-meddelanden.
Skapa en Xamarin.Android-app och anslut den till meddelandehubben
Skapa Visual Studio-projekt och lägg till NuGet-paket
Kommentar
Stegen som beskrivs i den här självstudien gäller för Visual Studio 2017.
I Visual Studio öppnar du menyn Arkiv. Välj Nytt och sedan Projekt. Gör följande i fönstret Nytt projekt:
Expandera Installerat, Visual C# och klicka sedan på Android.
Välj Android App (Xamarin) i listan.
Ange ett namn för projektet.
Välj en plats för projektet.
Välj OK.
I dialogrutan Ny Android-app väljer du Tom app och sedan OK.
Utvidga Egenskaper i fönstret Solution Explorer och klicka på AndroidManifest.xml. Uppdatera paketnamnet så att det matchar paketnamnet som du angav när du lade till Firebase Cloud Messaging till ditt projekt i Google Firebase-konsolen.
Ange Android-målversionen för projektet till Android 10.0 genom att följa dessa steg:
- Högerklicka på projektet och välj Egenskaper.
- För fältet Kompilera med Android-version: (Målramverk) väljer du Android 10.0.
- Välj Ja i meddelanderutan för att fortsätta med att ändra målramverket.
Lägg till nödvändiga NuGet-paket i projektet genom att följa dessa steg:
Högerklicka på projektet och välj Hantera NuGet-paket....
Växla till fliken Installerad , välj Xamarin.Android.Support.Design och välj Uppdatera i den högra rutan för att uppdatera paketet till den senaste versionen.
Växla till fliken Bläddra . Sök efter Xamarin.GooglePlayServices.Base. Välj Xamarin.GooglePlayServices.Base i resultatlistan. Markera Installera.
Sök efter Xamarin.Firebase.Messaging i fönstret NuGet Package Manager. Välj Xamarin.Firebase.Messaging i resultatlistan. Markera Installera.
Sök efter Xamarin.Azure.NotificationHubs.Android. Välj Xamarin.Azure.NotificationHubs.Android i resultatlistan. Markera Installera.
Lägg till Google Services JSON-filen
Kopiera den
google-services.json
-fil som du laddade ned från Google Firebase-konsolen till projektmappen.Lägg till
google-services.json
i projektet.Välj
google-services.json
i Solution Explorer-fönstret.Ställ in Skapa-åtgärden på GoogleServicesJson i rutan Egenskaper. Om GoogleServicesJson inte visas, så stäng och starta om Visual Studio, öppna projektet på nytt och försök igen.
Konfigurera meddelandehubbar i projektet
Registering med Firebase Cloud Messaging
Om du migrerar från Google Cloud Messaging till Firebase kan projektets
AndroidManifest.xml
fil innehålla en föråldrad GCM-konfiguration, vilket kan orsaka meddelandeduplicering. Redigera filen och ta bort följande rader i avsnittet, om det<application>
finns:<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>
Lägg till följande instruktioner före programelementet .
<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"/>
Samla in följande information för Android-appen och meddelandehubben:
- Lyssna anslutningssträng: På instrumentpanelen på Azure Portal väljer du Visa anslutningssträngar. Kopiera
DefaultListenSharedAccessSignature
-anslutningssträngen för det här värdet. - Hubbnamn: Namnet på hubben från Azure Portal. Till exempel mynotificationhub2.
- Lyssna anslutningssträng: På instrumentpanelen på Azure Portal väljer du Visa anslutningssträngar. Kopiera
I Solution Explorer-fönstret högerklickar du på ditt projekt och väljer Lägg till följt av Klass.
Skapa en
Constants.cs
-klass för Xamarin-projektet och definiera följande konstantvärden i klassen. Ersätt platshållarna med värdena.public static class Constants { public const string ListenConnectionString = "<Listen connection string>"; public const string NotificationHubName = "<hub name>"; }
Lägg till följande using-uttryck i
MainActivity.cs
:using WindowsAzure.Messaging.NotificationHubs;
Lägg till följande egenskaper i klassen MainActivity:
internal static readonly string CHANNEL_ID = "my_notification_channel";
I
MainActivity.cs
lägger du till följande kod iOnCreate
efterbase.OnCreate(savedInstanceState)
:// Listen for push notifications NotificationHub.SetListener(new AzureListener()); // Start the SDK NotificationHub.Start(this.Application, HubName, ConnectionString);
Lägg till en klass med namnet
AzureListener
i projektet.Lägg till följande using-uttryck i
AzureListener.cs
.using Android.Content; using WindowsAzure.Messaging.NotificationHubs;
Lägg till följande ovanför klassdeklarationen och låt klassen ärva från
Java.Lang.Object
och implementeraINotificationListener
:public class AzureListener : Java.Lang.Object, INotificationListener
Lägg till följande kod i
AzureListener
klassen för att bearbeta meddelanden som tas emot.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()); }
Skapa ditt projekt.
Kör appen på din enhet eller i en inläst emulator
Skicka ett testmeddelande från Azure Portal
Du kan testa att ta emot meddelanden i appen med alternativet Skicka test i Azure Portal. Den skickar ett test-push-meddelande till enheten.
Push-meddelanden skickas vanligtvis via en serverdelstjänst som Mobile Services eller ASP.NET med hjälp av ett kompatibelt bibliotek. Om ett bibliotek inte är tillgängligt för serverdelen kan du också använda REST-API:et direkt för att skicka meddelanden.
Nästa steg
I de här självstudierna har du skickat meddelanden till alla Android-enheter som är registrerade hos serverdelen. Information om hur du skickar meddelanden till specifika Android-enheter finns i följande självstudier: