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

Skapa ett Firebase-projekt och aktivera Firebase Cloud Messaging

  1. Logga in på Firebase-konsolen. Skapa ett nytt Firebase-projekt om du inte redan har ett.

  2. När du har skapat ett projekt väljer du Lägg till Firebase till din Android-app.

    Add Firebase to your Android app

  3. På sidan Lägg till Firebase i din Android-app utför du följande steg:

    1. För Android-paketnamnet anger du ett namn för ditt paket. Exempel: tutorials.tutoria1.xamarinfcmapp.

      Specify the package name

    2. Välj Registrera app.

    3. 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.

      Download google-services.json

    4. Välj Nästa.

    5. Välj Hoppa över det här steget.

      Skip the last step

  4. Välj kugghjulet för ditt projekt i Firebase-konsolen. Välj sedan Projektinställningar.

    Select Project Settings

  5. Om du inte har laddat ned filen google-services.json kan du ladda ned den på den här sidan.

    Download google-services.json from the General tab

  6. 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.

    Copy server key

Skapa en meddelandehubb

  1. Logga in på Azure-portalen.

  2. Välj Alla tjänster på den vänstra menyn. A screenshot showing select All Services for an existing namespace.

  3. 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.

    A screenshot showing how to filter for notification hubs.

  4. På sidan Notification Hubs väljer du Skapa i verktygsfältet.

    A screenshot showing how to create a new notification hub.

  5. Gör följande på fliken Grundläggandesidan Notification Hub:

    1. 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.

    2. Ange ett unikt namn för det nya namnområdet i Namnområdesinformation.

    3. Ett namnområde innehåller en eller flera meddelandehubbar, så skriv ett namn för hubben i Meddelandehubbens information.

    4. Välj ett värde i listrutan Plats . Det här värdet anger den plats där du vill skapa hubben.

      Screenshot showing notification hub details.

    5. 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å.

    6. 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.

      Screenshot showing availability zone details.

    7. Välj Skapa.

  6. När distributionen är klar väljer du Gå till resurs.

Konfigurera GCM/FCM-inställningar för meddelandehubben

  1. Välj Google (GCM/FCM)/ i avsnittet Inställningar på den vänstra menyn.

  2. Ange servernyckeln som du antecknade från Google Firebase Console.

  3. Välj Spara i verktygsfältet.

    Screenshot of Notification Hub in Azure Portal with Google G C M F C M option highlighted and outlined in red.

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.

  1. I Visual Studio öppnar du menyn Arkiv. Välj Nytt och sedan Projekt. Gör följande i fönstret Nytt projekt:

    1. Expandera Installerat, Visual C# och klicka sedan på Android.

    2. Välj Android App (Xamarin) i listan.

    3. Ange ett namn för projektet.

    4. Välj en plats för projektet.

    5. Välj OK.

      New Project dialog

  2. I dialogrutan Ny Android-app väljer du Tom app och sedan OK.

    Screenshot that highlights the Blank App template.

  3. 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.

    Package name in GCM

  4. Ange Android-målversionen för projektet till Android 10.0 genom att följa dessa steg:

    1. Högerklicka på projektet och välj Egenskaper.
    2. För fältet Kompilera med Android-version: (Målramverk) väljer du Android 10.0.
    3. Välj Ja i meddelanderutan för att fortsätta med att ändra målramverket.
  5. Lägg till nödvändiga NuGet-paket i projektet genom att följa dessa steg:

    1. Högerklicka på projektet och välj Hantera NuGet-paket....

    2. 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.

    3. Växla till fliken Bläddra . Sök efter Xamarin.GooglePlayServices.Base. Välj Xamarin.GooglePlayServices.Base i resultatlistan. Markera Installera.

      Google Play Services NuGet

    4. Sök efter Xamarin.Firebase.Messaging i fönstret NuGet Package Manager. Välj Xamarin.Firebase.Messaging i resultatlistan. Markera Installera.

    5. Sök efter Xamarin.Azure.NotificationHubs.Android. Välj Xamarin.Azure.NotificationHubs.Android i resultatlistan. Markera Installera.

Lägg till Google Services JSON-filen

  1. Kopiera den google-services.json-fil som du laddade ned från Google Firebase-konsolen till projektmappen.

  2. Lägg till google-services.json i projektet.

  3. Välj google-services.json i Solution Explorer-fönstret.

  4. 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.

    GoogleServicesJson build action

Konfigurera meddelandehubbar i projektet

Registering med Firebase Cloud Messaging

  1. 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>
    
  2. 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"/>
    
  3. 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.
  4. I Solution Explorer-fönstret högerklickar du på ditt projekt och väljer Lägg till följt av Klass.

  5. 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>";
    }
    
  6. Lägg till följande using-uttryck i MainActivity.cs:

    using WindowsAzure.Messaging.NotificationHubs;
    
  7. Lägg till följande egenskaper i klassen MainActivity:

    internal static readonly string CHANNEL_ID = "my_notification_channel";
    
    
  8. I MainActivity.cs lägger du till följande kod i OnCreate efter base.OnCreate(savedInstanceState):

    // Listen for push notifications
    NotificationHub.SetListener(new AzureListener());
    
    // Start the SDK
    NotificationHub.Start(this.Application, HubName, ConnectionString);
    
  9. Lägg till en klass med namnet AzureListener i projektet.

  10. Lägg till följande using-uttryck i AzureListener.cs.

    using Android.Content;
    using WindowsAzure.Messaging.NotificationHubs;
    
  11. Lägg till följande ovanför klassdeklarationen och låt klassen ärva från Java.Lang.Object och implementera INotificationListener:

    public class AzureListener : Java.Lang.Object, INotificationListener
    
  12. 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());
        }
    
  13. Skapa ditt projekt.

  14. 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.

Azure portal - Test Send

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: