Zelfstudie: Pushmeldingen verzenden naar Xamarin.Android-apps met Notification Hubs

Overzicht

In deze zelfstudie wordt gedemonstreerd hoe u met Azure Notification Hubs pushmeldingen verzendt naar een Xamarin.Android-toepassing. U maakt een lege Xamarin.Android-app die pushmeldingen ontvangt via Firebase Cloud Messaging (FCM). U gebruikt u de Notification Hub om pushmeldingen uit te zenden naar alle apparaten waarop uw app wordt uitgevoerd. De voltooide code is beschikbaar in het voorbeeld NotificationHubs-app.

In deze zelfstudie voert u de volgende stappen uit:

  • Een Firebase-project maken en Firebase Cloud Messaging inschakelen
  • Een Notification Hub maken
  • Een Xamarin.Android-app maken en deze verbinden met de Notification Hub
  • Testmeldingen verzenden vanuit Azure Portal

Vereisten

Een Firebase-project maken en Firebase Cloud Messaging inschakelen

  1. Meld u aan bij de Firebase-console. Maak een nieuw Firebase-project als u er nog geen hebt.

  2. Nadat u uw project hebt gemaakt, selecteert u Firebase toevoegen aan uw Android-app.

    Add Firebase to your Android app

  3. Voer de volgende stappen uit op de pagina Firebase toevoegen aan uw Android-app:

    1. Voer voor de Android-pakketnaam een naam in voor uw pakket. Voorbeeld: tutorials.tutoria1.xamarinfcmapp.

      Specify the package name

    2. Selecteer App registreren.

    3. Selecteer google services.json downloaden. Sla het bestand vervolgens op in de map van het project en selecteer Volgende. Als het Visual Studio-project nog niet hebt gemaakt, kunt u deze stap uitvoeren nadat u het project hebt gemaakt.

      Download google-services.json

    4. Selecteer Volgende.

    5. Selecteer Deze stap overslaan.

      Skip the last step

  4. Selecteer in de Firebase-console het tandwiel van uw project. Selecteer vervolgens Projectinstellingen.

    Select Project Settings

  5. Als u het bestand google-services.json niet hebt gedownload, kunt u het downloaden op deze pagina.

    Download google-services.json from the General tab

  6. Ga naar Cloud Messaging bovenaan op het tabblad. Kopieer de Serversleutel en sla deze op voor later gebruik. U gebruikt deze waarde om uw Notification Hub te configureren.

    Copy server key

Een Notification Hub maken

  1. Meld u aan bij het Azure-portaal.

  2. Selecteer Alle services in het linkermenu. A screenshot showing select All Services for an existing namespace.

  3. Typ Notification Hubs in het tekstvak Filterservices . Selecteer het sterpictogram naast de servicenaam om de service toe te voegen aan de sectie FAVORIETEN in het menu aan de linkerkant. Selecteer Notification Hubs.

    A screenshot showing how to filter for notification hubs.

  4. Selecteer Op de pagina Notification Hubs maken op de werkbalk.

    A screenshot showing how to create a new notification hub.

  5. Voer op het tabblad Basis op de pagina Notification Hub de volgende stappen uit:

    1. Selecteer in Abonnement de naam van het Azure-abonnement dat u wilt gebruiken en selecteer vervolgens een bestaande resourcegroep of maak een nieuw abonnement.

    2. Voer een unieke naam in voor de nieuwe naamruimte in Naamruimtedetails.

    3. Een naamruimte bevat een of meer Notification Hubs, dus typ een naam voor de hub in Notification Hub Details.

    4. Selecteer een waarde in de vervolgkeuzelijst Locatie. Deze waarde specificeert de locatie waar u de hub wilt maken.

      Screenshot showing notification hub details.

    5. Controleer de optie Beschikbaarheidszones. Als u een regio met beschikbaarheidszones hebt gekozen, is het selectievakje standaard ingeschakeld. Beschikbaarheidszones is een betaalde functie, dus er worden extra kosten aan uw laag toegevoegd.

    6. Kies een optie voor herstel na noodgevallen : Geen, Gekoppelde herstelregio of Flexibele herstelregio. Als u gekoppelde herstelregio kiest, wordt de failoverregio weergegeven. Als u Flexibele herstelregio selecteert, gebruikt u de vervolgkeuzelijst om te kiezen uit een lijst met herstelregio's.

      Screenshot showing availability zone details.

    7. Selecteer Maken.

  6. Wanneer de implementatie is voltooid, selecteert u Ga naar de resource.

GCM/FCM-instellingen configureren voor de Notification Hub

  1. Selecteer Google (GCM/FCM) in het gedeelte Instellingen in het menu links.

  2. Voer de serversleutel in die u eerder hebt genoteerd in de Google Firebase Console.

  3. Selecteer Opslaan op de werkbalk.

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

De Notification Hub is geconfigureerd om te werken met FCM en u hebt de verbindingsreeksen om uw app te registreren voor het ontvangen van meldingen en voor het verzenden van pushmeldingen.

Een Xamarin.Android-app maken en deze verbinden met de Notification Hub

Visual Studio-project maken en NuGet-pakketten toevoegen

Notitie

De stappen die in deze zelfstudie worden beschreven, zijn voor Visual Studio 2017.

  1. Open in Visual Studio het menu File en selecteer New en vervolgens Project. Voer in het venster Nieuw project de volgende stappen uit:

    1. Vouw Geïnstalleerduit, vervolgens Visual C# en klik dan op Android.

    2. Selecteer Android-app (Xamarin) uit de lijst.

    3. Voer een naam in voor het project.

    4. Selecteer een locatie voor het project.

    5. Selecteer OK.

      New Project dialog

  2. Selecteer in het dialoogvenster Nieuwe Android-app de optie Lege app en dan OK.

    Screenshot that highlights the Blank App template.

  3. Vouw in het venster Solution Explorer het item Properties uit en klik op AndroidManifest.xml. Wijzig de naam van het pakket zodat deze overeenkomt met de pakketnaam die u hebt ingevoerd tijdens het toevoegen van Firebase Cloud Messaging aan uw project in Google Firebase Console.

    Package name in GCM

  4. Stel de android-doelversie voor het project in op Android 10.0 door de volgende stappen uit te voeren:

    1. Klik met de rechtermuisknop op het project en selecteer Eigenschappen.
    2. Selecteer Android 10.0 voor het veld Compileren met android-versie: (doelframework).
    3. Selecteer Ja in het berichtvenster om door te gaan met het wijzigen van het doelframework.
  5. Voeg de vereiste NuGet-pakketten toe aan het project door de volgende stappen uit te voeren:

    1. Klik met de rechtermuisknop op het project en selecteer Manage NuGet Packages....

    2. Ga naar het tabblad Geïnstalleerd, selecteer Xamarin.Android.Support.Design en selecteer Update in het rechterdeelvenster om het pakket bij te werken naar de meest recente versie.

    3. Ga naar het tabblad Bladeren . Zoek naar Xamarin.GooglePlayServices.Base. Selecteer Xamarin.GooglePlayServices.Base in de lijst met resultaten. Selecteer vervolgens Install.

      Google Play Services NuGet

    4. Zoek in het venster NuGet Package Manager naar Xamarin.Firebase.Messaging. Selecteer Xamarin.Firebase.Messaging in de lijst met resultaten. Selecteer vervolgens Install.

    5. Zoek nu naar Xamarin.Azure.NotificationHubs.Android. Selecteer Xamarin.Azure.NotificationHubs.Android in de lijst met resultaten. Selecteer vervolgens Install.

Voeg het JSON-bestand van Google Services toe

  1. Kopieer het bestand google-services.json dat u uit de Google Firebase Console hebt gedownload naar de projectmap.

  2. Voeg google-services.json toe aan het project.

  3. Selecteer google-services.json in het venster Solution Explorer.

  4. Stel in het deelvenster Properties de optie Build Action in op GoogleServicesJson. Als u GoogleServicesJson niet ziet, sluit u Visual Studio, opent u het programma opnieuw, opent u het project opnieuw en probeert u het nog een keer.

    GoogleServicesJson build action

Notification Hubs in uw project instellen

Firebase Cloud Messaging registreren

  1. Als u migreert van Google Cloud Messaging naar Firebase, bevat het bestand van AndroidManifest.xml uw project mogelijk een verouderde GCM-configuratie, wat kan leiden tot duplicatie van meldingen. Bewerk het bestand en verwijder de volgende regels in de <application> sectie, indien aanwezig:

    <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. Voeg de volgende instructies toe vóór het element van de toepassing.

    <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. Verzamel de volgende informatie voor uw Android-app en Notification Hub:

    • Verbindingsreeks voor luisteren: kies op het dashboard in Azure Portal de optie Verbindingsreeksen weergeven. Kopieer de verbindingsreeks DefaultListenSharedAccessSignature voor deze waarde.
    • Hubnaam: de naam van uw hub in Azure Portal. Bijvoorbeeld mynotificationhub2.
  4. Klik in het venster Solution Explorer met de rechtermuisknop op uw project, selecteer Add en vervolgens Class.

  5. Maak een klasse Constants.cs voor uw Xamarin-project en definieer de volgende constantewaarden in de klasse. Vervang de tijdelijke aanduidingen door de waarden.

    public static class Constants
    {
        public const string ListenConnectionString = "<Listen connection string>";
        public const string NotificationHubName = "<hub name>";
    }
    
  6. Voeg de volgende using-instructies toe aan MainActivity.cs:

    using WindowsAzure.Messaging.NotificationHubs;
    
  7. Voeg de volgende eigenschappen toe aan de klasse MainActivity:

    internal static readonly string CHANNEL_ID = "my_notification_channel";
    
    
  8. Voeg in MainActivity.cs de volgende code toe aan OnCreate, achter base.OnCreate(savedInstanceState):

    // Listen for push notifications
    NotificationHub.SetListener(new AzureListener());
    
    // Start the SDK
    NotificationHub.Start(this.Application, HubName, ConnectionString);
    
  9. Voeg een klasse met de naam AzureListener toe aan uw project.

  10. Voeg de volgende using-instructies toe aan AzureListener.cs.

    using Android.Content;
    using WindowsAzure.Messaging.NotificationHubs;
    
  11. Voeg het volgende toe boven uw klassedeclaratie en laat uw klasse overnemen van Java.Lang.Object en het INotificationListenervolgende implementeren:

    public class AzureListener : Java.Lang.Object, INotificationListener
    
  12. Voeg de volgende code toe in de klasse AzureListener om de ontvangen berichten te verwerken.

        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. Compileer het nieuwe project.

  14. Voer uw app uit op uw apparaat of in een geladen emulator.

Testmeldingen verzenden vanuit Azure Portal

U kunt ontvangst van meldingen in uw app testen met de optie Test verzenden in Azure Portal. Er wordt dan een pushmelding als test naar uw apparaat verzonden.

Azure portal - Test Send

Pushmeldingen worden gewoonlijk in een back-endservice zoals Mobile Services of ASP.NET verzonden via een compatibele bibliotheek. U kunt de REST API ook rechtstreeks gebruiken om meldingsberichten te verzenden als er geen bibliotheek beschikbaar is voor uw back-end.

Volgende stappen

In deze zelfstudie hebt u meldingen uitgezonden naar al uw Android-apparaten die zijn geregistreerd bij de back-end. Als u wilt weten hoe u pushmeldingen kunt verzenden naar specifieke Android-apparaten, gaat u verder met de volgende zelfstudie: