Zelfstudie: Pushmeldingen verzenden naar Xamarin.Android-apps met Notification Hubs
Overzicht
Notitie
Zie De migratie van Google Firebase Cloud Messaging voor informatie over de afschaffing en migratiestappen van Firebase Cloud Messaging.
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
- Azure-abonnement. Als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account voordat u begint.
- Visual Studio met Xamarin onder Windows of Visual Studio voor Mac onder OS X.
- Actief Google-account
Een Firebase-project maken en Firebase Cloud Messaging inschakelen
Meld u aan bij de Firebase-console. Maak een nieuw Firebase-project als u er nog geen hebt.
Nadat u uw project hebt gemaakt, selecteert u Firebase toevoegen aan uw Android-app.
Voer de volgende stappen uit op de pagina Firebase toevoegen aan uw Android-app:
Voer voor de Android-pakketnaam een naam in voor uw pakket. Voorbeeld:
tutorials.tutoria1.xamarinfcmapp
.Selecteer App registreren.
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.
Selecteer Volgende.
Selecteer Deze stap overslaan.
Selecteer in de Firebase-console het tandwiel van uw project. Selecteer vervolgens Projectinstellingen.
Als u het bestand google-services.json niet hebt gedownload, kunt u het downloaden op deze pagina.
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.
Een Notification Hub maken
Meld u aan bij het Azure-portaal.
Selecteer Alle services in het linkermenu.
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.
Selecteer Op de pagina Notification Hubs maken op de werkbalk.
Voer op het tabblad Basis op de pagina Notification Hub de volgende stappen uit:
Selecteer in Abonnement de naam van het Azure-abonnement dat u wilt gebruiken en selecteer vervolgens een bestaande resourcegroep of maak een nieuw abonnement.
Voer een unieke naam in voor de nieuwe naamruimte in Naamruimtedetails.
Een naamruimte bevat een of meer Notification Hubs, dus typ een naam voor de hub in Notification Hub Details.
Selecteer een waarde in de vervolgkeuzelijst Locatie. Deze waarde specificeert de locatie waar u de hub wilt maken.
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.
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.
Selecteer Maken.
Wanneer de implementatie is voltooid, selecteert u Ga naar de resource.
GCM/FCM-instellingen configureren voor de Notification Hub
Selecteer Google (GCM/FCM) in het gedeelte Instellingen in het menu links.
Voer de serversleutel in die u eerder hebt genoteerd in de Google Firebase Console.
Selecteer Opslaan op de werkbalk.
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.
Open in Visual Studio het menu File en selecteer New en vervolgens Project. Voer in het venster Nieuw project de volgende stappen uit:
Vouw Geïnstalleerduit, vervolgens Visual C# en klik dan op Android.
Selecteer Android-app (Xamarin) uit de lijst.
Voer een naam in voor het project.
Selecteer een locatie voor het project.
Selecteer OK.
Selecteer in het dialoogvenster Nieuwe Android-app de optie Lege app en dan OK.
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.
Stel de android-doelversie voor het project in op Android 10.0 door de volgende stappen uit te voeren:
- Klik met de rechtermuisknop op het project en selecteer Eigenschappen.
- Selecteer Android 10.0 voor het veld Compileren met android-versie: (doelframework).
- Selecteer Ja in het berichtvenster om door te gaan met het wijzigen van het doelframework.
Voeg de vereiste NuGet-pakketten toe aan het project door de volgende stappen uit te voeren:
Klik met de rechtermuisknop op het project en selecteer Manage NuGet Packages....
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.
Ga naar het tabblad Bladeren . Zoek naar Xamarin.GooglePlayServices.Base. Selecteer Xamarin.GooglePlayServices.Base in de lijst met resultaten. Selecteer vervolgens Install.
Zoek in het venster NuGet Package Manager naar Xamarin.Firebase.Messaging. Selecteer Xamarin.Firebase.Messaging in de lijst met resultaten. Selecteer vervolgens Install.
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
Kopieer het bestand
google-services.json
dat u uit de Google Firebase Console hebt gedownload naar de projectmap.Voeg
google-services.json
toe aan het project.Selecteer
google-services.json
in het venster Solution Explorer.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.
Notification Hubs in uw project instellen
Firebase Cloud Messaging registreren
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>
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"/>
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.
- Verbindingsreeks voor luisteren: kies op het dashboard in Azure Portal de optie Verbindingsreeksen weergeven. Kopieer de verbindingsreeks
Klik in het venster Solution Explorer met de rechtermuisknop op uw project, selecteer Add en vervolgens Class.
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>"; }
Voeg de volgende using-instructies toe aan
MainActivity.cs
:using WindowsAzure.Messaging.NotificationHubs;
Voeg de volgende eigenschappen toe aan de klasse MainActivity:
internal static readonly string CHANNEL_ID = "my_notification_channel";
Voeg in
MainActivity.cs
de volgende code toe aanOnCreate
, achterbase.OnCreate(savedInstanceState)
:// Listen for push notifications NotificationHub.SetListener(new AzureListener()); // Start the SDK NotificationHub.Start(this.Application, HubName, ConnectionString);
Voeg een klasse met de naam
AzureListener
toe aan uw project.Voeg de volgende using-instructies toe aan
AzureListener.cs
.using Android.Content; using WindowsAzure.Messaging.NotificationHubs;
Voeg het volgende toe boven uw klassedeclaratie en laat uw klasse overnemen van
Java.Lang.Object
en hetINotificationListener
volgende implementeren:public class AzureListener : Java.Lang.Object, INotificationListener
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()); }
Compileer het nieuwe project.
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.
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: