Pushmeldingen toevoegen aan uw Xamarin.Forms-app

Overzicht

In deze zelfstudie voegt u pushmeldingen toe aan alle projecten die het resultaat zijn van de snelstartgids Xamarin.Forms. Dit betekent dat telkens wanneer een record wordt ingevoegd, een pushmelding naar alle platformoverschrijdende clients wordt verzonden.

Als u het gedownloade quickstart-serverproject niet gebruikt, hebt u het pushmeldingsextensiepakket nodig. Zie Werken met de SDK voor de .NET-back-endserver voor Azure Mobile Apps voor meer informatie.

Vereisten

Voor iOS hebt u een Apple Developer Program-lidmaatschap en een fysiek iOS-apparaat nodig. De iOS-simulator biedt geen ondersteuning voor pushmeldingen.

Een Notification Hub configureren

De functie Mobile Apps van Azure App Service maakt gebruik van Azure Notification Hubs om pushes te verzenden, dus u configureert een Notification Hub voor uw mobiele app.

  1. Ga in de Azure Portal naar App Services en selecteer vervolgens de back-end van uw app. Selecteer Push onder Instellingen.

  2. Als u een Notification Hub-resource aan de app wilt toevoegen, selecteert u Verbinding maken. U kunt een hub maken of verbinding maken met een bestaande hub.

    Een hub configureren

U hebt nu een Notification Hub verbonden met uw back-endproject van Mobile Apps. Later configureert u deze Notification Hub om verbinding te maken met een PNS (Platform Notification System) om naar apparaten te pushen.

Het serverproject bijwerken om pushmeldingen te verzenden

In deze sectie werkt u code bij in uw bestaande back-endproject van Mobile Apps om een pushmelding te verzenden telkens wanneer een nieuw item wordt toegevoegd. Dit proces wordt mogelijk gemaakt door de sjabloonfunctie van Azure Notification Hubs, waardoor platformoverschrijdende pushs mogelijk zijn. De verschillende clients worden geregistreerd voor pushmeldingen met behulp van sjablonen en één universele push kan naar alle clientplatforms worden verzonden.

Kies een van de volgende procedures die overeenkomen met uw back-endprojecttype: .NET-back-end of Node.js back-end.

.NET-back-endproject

  1. Klik in Visual Studio met de rechtermuisknop op het serverproject. Selecteer vervolgens NuGet-pakketten beheren. Microsoft.Azure.NotificationHubsZoek en selecteer Vervolgens Installeren. Met dit proces wordt de Notification Hubs-bibliotheek geïnstalleerd voor het verzenden van meldingen vanaf de back-end.

  2. Open Controllers>TodoItemController.cs in het serverproject. Voeg vervolgens het volgende toe met behulp van instructies:

    using System.Collections.Generic;
    using Microsoft.Azure.NotificationHubs;
    using Microsoft.Azure.Mobile.Server.Config;
    
  3. Voeg in de methode PostTodoItem de volgende code toe na de aanroep van InsertAsync:

    // Get the settings for the server project.
    HttpConfiguration config = this.Configuration;
    MobileAppSettingsDictionary settings =
        this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
    // Get the Notification Hubs credentials for the mobile app.
    string notificationHubName = settings.NotificationHubName;
    string notificationHubConnection = settings
        .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
    // Create a new Notification Hub client.
    NotificationHubClient hub = NotificationHubClient
    .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    
    // Send the message so that all template registrations that contain "messageParam"
    // receive the notifications. This includes APNS, GCM, WNS, and MPNS template registrations.
    Dictionary<string,string> templateParams = new Dictionary<string,string>();
    templateParams["messageParam"] = item.Text + " was added to the list.";
    
    try
    {
        // Send the push notification and log the results.
        var result = await hub.SendTemplateNotificationAsync(templateParams);
    
        // Write the success result to the logs.
        config.Services.GetTraceWriter().Info(result.State.ToString());
    }
    catch (System.Exception ex)
    {
        // Write the failure result to the logs.
        config.Services.GetTraceWriter()
            .Error(ex.Message, null, "Push.SendAsync Error");
    }
    

    Met dit proces wordt een sjabloonmelding met het item verzonden. Tekst wanneer een nieuw item wordt ingevoegd.

  4. Publiceer het serverproject opnieuw.

Node.js back-endproject

  1. Stel uw back-endproject in.

  2. Vervang de bestaande code in todoitem.js door de volgende code:

    var azureMobileApps = require('azure-mobile-apps'),
    promises = require('azure-mobile-apps/src/utilities/promises'),
    logger = require('azure-mobile-apps/src/logger');
    
    var table = azureMobileApps.table();
    
    table.insert(function (context) {
    // For more information about the Notification Hubs JavaScript SDK,
    // see https://aka.ms/nodejshubs.
    logger.info('Running TodoItem.insert');
    
    // Define the template payload.
    var payload = '{"messageParam": "' + context.item.text + '" }';  
    
    // Execute the insert. The insert returns the results as a promise.
    // Do the push as a post-execute action within the promise flow.
    return context.execute()
        .then(function (results) {
            // Only do the push if configured.
            if (context.push) {
                // Send a template notification.
                context.push.send(null, payload, function (error) {
                    if (error) {
                        logger.error('Error while sending push notification: ', error);
                    } else {
                        logger.info('Push notification sent successfully!');
                    }
                });
            }
            // Don't forget to return the results from the context.execute().
            return results;
        })
        .catch(function (error) {
            logger.error('Error while running context.execute: ', error);
        });
    });
    
    module.exports = table;  
    

    Met dit proces wordt een sjabloonmelding met de item.text verzonden wanneer een nieuw item wordt ingevoegd.

  3. Wanneer u het bestand op uw lokale computer bewerkt, publiceert u het serverproject opnieuw.

Het Android-project configureren en uitvoeren (optioneel)

Voltooi deze sectie om pushmeldingen in te schakelen voor het Xamarin.Forms Droid-project voor Android.

Firebase Cloud Messaging (FCM) 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.

    Firebase toevoegen aan uw Android-app

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

    1. Voor Android-pakketnaam kopieert u de waarde van uw applicationId in het bestand build.gradle van uw toepassing. In dit voorbeeld is het com.fabrikam.fcmtutorial1app.

      Specificeer de pakketnaam

    2. Selecteer App registreren.

  4. Selecteer google-services.json downloaden, sla het bestand op in de map app van uw project, en selecteer Volgende.

    Download google-services.json

  5. Breng de volgende configuratiewijzigingen aan in uw project in Android Studio.

    1. Voeg in het bestand build.gradle op projectniveau (<project>/build.gradle) de volgende instructie toe aan de sectie dependencies (afhankelijkheden).

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. Voeg in het build.gradle-bestand op app-niveau (<project>/<app-module>/build.gradle) de volgende instructies toe aan de sectie afhankelijkheden .

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-messaging:17.3.4'
      
    3. Voeg de volgende regel toe aan het einde van het build.gradle-bestand op app-niveau na de sectie met afhankelijkheden.

      apply plugin: 'com.google.gms.google-services'
      
    4. Selecteer Nu synchroniseren op de werkbalk.

      build.gradle-configuratiewijzigingen

  6. Selecteer Next.

  7. Selecteer Deze stap overslaan.

    De laatste stap overslaan

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

    Selecteer Projectinstellingen

  9. Als u het bestand google-services.json niet hebt gedownload in de map app van uw Android Studio-project, kunt u dat op deze pagina doen.

  10. Ga naar Cloud Messaging bovenaan op het tabblad.

  11. Kopieer de Serversleutel en sla deze op voor later gebruik. U gebruikt deze waarde om uw hub te configureren.

De back-end van Mobile Apps configureren om pushaanvragen te verzenden met FCM

  1. Selecteer In de Azure Portal alleApp Servicesbladeren>. Selecteer vervolgens de back-end van uw Mobile Apps.
  2. Selecteer Push onder Instellingen. Selecteer Vervolgens Push Notification Services configureren.
  3. Ga naar Google (GCM). Voer de verouderde FCM-serversleutel in die u hebt verkregen via de Firebase-console en selecteer Opslaan.

Uw service is nu geconfigureerd voor gebruik met Firebase Cloud Messaging.

Pushmeldingen toevoegen aan het Android-project

Als de back-end is geconfigureerd met FCM, kunt u onderdelen en codes toevoegen aan de client om u te registreren bij FCM. U kunt zich ook registreren voor pushmeldingen met Azure Notification Hubs via de back-end van Mobile Apps en meldingen ontvangen.

  1. Klik in het Droid-project met de rechtermuisknop op Verwijzingen > beheren NuGet-pakketten ....
  2. Zoek in het venster NuGet Package Manager naar het Xamarin.Firebase.Messaging-pakket en voeg het toe aan het project.
  3. Stel in de projecteigenschappen voor het Droid-project de app in om te compileren met Android-versie 7.0 of hoger.
  4. Voeg het bestand google-services.json toe, gedownload van de Firebase-console, aan de hoofdmap van het Droid-project en stel de buildactie in op GoogleServicesJson. Zie Het JSON-bestand van Google Services toevoegen voor meer informatie.

Firebase Cloud Messaging registreren

  1. Open het bestand AndroidManifest.xml en voeg de volgende <receiver>-elementen toe aan het element <application>:

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

De Firebase Instance ID-service implementeren

  1. Voeg een nieuwe klasse toe aan het Droid-project met de naam FirebaseRegistrationServiceen zorg ervoor dat de volgende using instructies boven aan het bestand staan:

    using System.Threading.Tasks;
    using Android.App;
    using Android.Util;
    using Firebase.Iid;
    using Microsoft.WindowsAzure.MobileServices;
    
  2. Vervang de lege FirebaseRegistrationService klasse door de volgende code:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
    public class FirebaseRegistrationService : FirebaseInstanceIdService
    {
        const string TAG = "FirebaseRegistrationService";
    
        public override void OnTokenRefresh()
        {
            var refreshedToken = FirebaseInstanceId.Instance.Token;
            Log.Debug(TAG, "Refreshed token: " + refreshedToken);
            SendRegistrationTokenToAzureNotificationHub(refreshedToken);
        }
    
        void SendRegistrationTokenToAzureNotificationHub(string token)
        {
            // Update notification hub registration
            Task.Run(async () =>
            {
                await AzureNotificationHubService.RegisterAsync(TodoItemManager.DefaultManager.CurrentClient.GetPush(), token);
            });
        }
    }
    

    De FirebaseRegistrationService klasse is verantwoordelijk voor het genereren van beveiligingstokens waarmee de toepassing toegang krijgt tot FCM. De OnTokenRefresh methode wordt aangeroepen wanneer de toepassing een registratietoken van FCM ontvangt. De methode haalt het token op uit de FirebaseInstanceId.Instance.Token eigenschap, die asynchroon wordt bijgewerkt door FCM. De OnTokenRefresh methode wordt niet vaak aangeroepen, omdat het token alleen wordt bijgewerkt wanneer de toepassing wordt geïnstalleerd of verwijderd, wanneer de gebruiker toepassingsgegevens verwijdert, wanneer de toepassing de exemplaar-id wist of wanneer de beveiliging van het token is aangetast. Daarnaast vraagt de FCM Instance ID-service om het token periodiek te vernieuwen, meestal om de zes maanden.

    De OnTokenRefresh methode roept ook de SendRegistrationTokenToAzureNotificationHub methode aan, die wordt gebruikt om het registratietoken van de gebruiker te koppelen aan de Azure Notification Hub.

Registreren bij de Azure Notification Hub

  1. Voeg een nieuwe klasse toe aan het Droid-project met de naam AzureNotificationHubServiceen zorg ervoor dat de volgende using instructies boven aan het bestand staan:

    using System;
    using System.Threading.Tasks;
    using Android.Util;
    using Microsoft.WindowsAzure.MobileServices;
    using Newtonsoft.Json.Linq;
    
  2. Vervang de lege AzureNotificationHubService klasse door de volgende code:

    public class AzureNotificationHubService
    {
        const string TAG = "AzureNotificationHubService";
    
        public static async Task RegisterAsync(Push push, string token)
        {
            try
            {
                const string templateBody = "{\"data\":{\"message\":\"$(messageParam)\"}}";
                JObject templates = new JObject();
                templates["genericMessage"] = new JObject
                {
                    {"body", templateBody}
                };
    
                await push.RegisterAsync(token, templates);
                Log.Info("Push Installation Id: ", push.InstallationId.ToString());
            }
            catch (Exception ex)
            {
                Log.Error(TAG, "Could not register with Notification Hub: " + ex.Message);
            }
        }
    }
    

    Met de RegisterAsync methode wordt een eenvoudige sjabloon voor meldingsberichten gemaakt als JSON en wordt geregistreerd voor het ontvangen van sjabloonmeldingen van de Notification Hub met behulp van het Firebase-registratietoken. Dit zorgt ervoor dat meldingen die vanuit de Azure Notification Hub worden verzonden, het apparaat targeten dat wordt vertegenwoordigd door het registratietoken.

De inhoud van een pushmelding weergeven

  1. Voeg een nieuwe klasse toe aan het Droid-project met de naam FirebaseNotificationServiceen zorg ervoor dat de volgende using instructies boven aan het bestand staan:

    using Android.App;
    using Android.Content;
    using Android.Media;
    using Android.Support.V7.App;
    using Android.Util;
    using Firebase.Messaging;
    
  2. Vervang de lege FirebaseNotificationService klasse door de volgende code:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class FirebaseNotificationService : FirebaseMessagingService
    {
        const string TAG = "FirebaseNotificationService";
    
        public override void OnMessageReceived(RemoteMessage message)
        {
            Log.Debug(TAG, "From: " + message.From);
    
            // Pull message body out of the template
            var messageBody = message.Data["message"];
            if (string.IsNullOrWhiteSpace(messageBody))
                return;
    
            Log.Debug(TAG, "Notification message body: " + messageBody);
            SendNotification(messageBody);
        }
    
        void SendNotification(string messageBody)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            //Unique request code to avoid PendingIntent collision.
            var requestCode = new Random().Next();
            var pendingIntent = PendingIntent.GetActivity(this, requestCode, intent, PendingIntentFlags.OneShot);
            var notificationBuilder = new NotificationCompat.Builder(this)
                .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
                .SetContentTitle("New Todo Item")
                .SetContentText(messageBody)
                .SetContentIntent(pendingIntent)
                .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
                .SetAutoCancel(true);
    
            var notificationManager = NotificationManager.FromContext(this);
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    }
    

    De OnMessageReceived methode, die wordt aangeroepen wanneer een toepassing een melding van FCM ontvangt, de berichtinhoud extraheert en de SendNotification methode aanroept. Met deze methode wordt de berichtinhoud geconverteerd naar een lokale melding die wordt gestart terwijl de toepassing wordt uitgevoerd, waarbij de melding wordt weergegeven in het systeemvak.

Nu bent u klaar om pushmeldingen te testen in de app die wordt uitgevoerd op een Android-apparaat of de emulator.

Pushmeldingen testen in uw Android-app

De eerste twee stappen zijn alleen vereist wanneer u een emulator test.

  1. Zorg ervoor dat u implementeert op of foutopsporing uitvoert op een apparaat of emulator die is geconfigureerd met Google Play Services. Dit kan worden gecontroleerd door te controleren of de Play-apps zijn geïnstalleerd op het apparaat of de emulator.
  2. Voeg een Google-account toe aan het Android-apparaat door te klikken op Apps>Settings>Add account. Volg vervolgens de aanwijzingen om een bestaand Google-account toe te voegen aan het apparaat of om een nieuw account te maken.
  3. Klik in Visual Studio of Xamarin Studio met de rechtermuisknop op het Droid-project en klik op Instellen als opstartproject.
  4. Klik op Uitvoeren om het project te bouwen en de app te starten op uw Android-apparaat of -emulator.
  5. Typ een taak in de app en klik vervolgens op het plusteken (+).
  6. Controleer of er een melding wordt ontvangen wanneer een item wordt toegevoegd.

Het iOS-project configureren en uitvoeren (optioneel)

Deze sectie gaat over het uitvoeren van het Xamarin iOS-project voor iOS-apparaten. Als u niet met iOS-apparaten werkt, kunt u deze sectie overslaan.

Het bestand met de aanvraag voor certificaatondertekening genereren

De Apple Push Notification service (APNs) maakt gebruik van certificaten om uw pushmeldingen te verifiëren. Volg deze instructies om het pushcertificaat te maken dat vereist is om meldingen te verzenden en te ontvangen. Zie de officiële documentatie van de Apple Push Notification Service voor meer informatie over deze concepten.

Genereer het bestand met de aanvraag voor certificaatondertekening dat door Apple wordt gebruikt om een ondertekend pushcertificaat te genereren.

  1. Voer op uw Mac het hulpprogramma Sleutelhangertoegang uit. Dit kan worden gestart vanuit de map Hulpprogramma's of de map Overige in Launchpad.

  2. Selecteer Toegang tot sleutelhanger, vouw Certificaatassistent uit en selecteer vervolgens Een certificaat bij een certificaatautoriteit aanvragen.

    Toegang tot sleutelhanger gebruiken om een nieuw certificaat aan te vragen

    Notitie

    Sleutelhangertoegang selecteert standaard het eerste item in de lijst. Dit kan een probleem zijn als u zich in de categorie Certificaten bevindt en Apple Worldwide Developer Relations Certification Authority niet het eerste item in de lijst is. Zorg ervoor dat u een item hebt dat geen sleutel is of dat de sleutel Apple Worldwide Developer Relations Certification Authority is geselecteerd, voordat u de CSR (Certificate Signing Request) genereert.

  3. Selecteer uw E-mailadres van de gebruiker, voer uw waarde voor Algemene naam in, zorg ervoor dat u Opgeslagen op schijf hebt opgegeven en selecteer Doorgaan. Laat E-mailadres van CA leeg omdat dit niet vereist is.

    Vereiste certificaatgegevens

  4. Voer een naam in voor het CSR-bestand in Opslaan als, selecteer de locatie in Waar en selecteer vervolgens Opslaan.

    Kies een bestandsnaam voor het certificaat

    Met deze actie wordt het CSR-bestand opgeslagen op de geselecteerde locatie. De standaardlocatie is Desktop. Onthoud de locatie die u voor het bestand hebt gekozen.

Vervolgens gaat u uw app registreren bij Apple, pushmeldingen inschakelen en het geëxporteerde bestand met de aanvraag voor certificaatondertekening uploaden om een pushcertificaat te maken.

Uw app voor pushmeldingen registreren

Registreer uw app bij Apple en registreer u voor pushmeldingen om pushmeldingen te verzenden naar een iOS-app.

  1. Als u uw app nog niet hebt geregistreerd, bladert u naar de iOS Provisioning Portal in het Apple Developer Center. Meld u aan bij de portal met uw Apple ID en selecteer ID's. Selecteer vervolgens + om een nieuwe app te registreren.

    App-id-pagina van iOS-inrichtingsportal

  2. Selecteer op het scherm Een nieuwe id registreren het keuzerondje App-id's. Selecteer vervolgens Doorgaan.

    Nieuwe id-pagina registreren voor iOS Provisioning Portal

  3. Werk de volgende drie waarden voor uw nieuwe app bij en selecteer vervolgens Doorgaan:

    • Beschrijving: Typ een beschrijvende naam voor uw app.

    • Bundel-id: Voer een bundel-id in van het formulier Organization Identifier.Product Name zoals genoemd in de App Distribution Guide. De waarden voor Organization Identifier en Product Name moeten overeenkomen met de organisatie-id en productnaam die u gebruikt wanneer u een Xcode-project gaat maken. In de volgende schermopname wordt de waarde voor NotificationHubs als de organisatie-id gebruikt en de waarde voor GetStarted als de productnaam. Zorg ervoor dat de waarde voor Bundel-id overeenkomt met de waarde in uw Xcode-project, zodat Xcode het juiste publicatieprofiel gebruikt.

      App-id-pagina registreren voor iOS Provisioning Portal

    • Pushmeldingen: Controleer de optie Pushmeldingen in het gedeelte Mogelijkheden.

      Formulier voor het registreren van een nieuwe app-id

      Met deze actie wordt uw app-id gegenereerd en wordt u gevraagd om de gegevens te bevestigen. Selecteer Doorgaan en selecteer vervolgens Registreren om de nieuwe app-id te bevestigen.

      Nieuwe app-id bevestigen

      Nadat u Registreren hebt geselecteerd, ziet u de nieuwe app-id als regelitem op de pagina Certificaten, Id-profielen&.

  4. Zoek op de pagina Certificaten, Id-profielen & onder Id's het regelitem van de app-id dat u zojuist hebt gemaakt en selecteer de rij om het scherm App-id-configuratie bewerken weer te geven.

Een certificaat maken voor Notification Hubs

Er is een certificaat vereist om de Notification Hub te kunnen laten werken met APNs. Dit kan op een van de volgende twee manieren worden gedaan:

  1. Maak een .p12 dat rechtstreeks kan worden geüpload naar de Notification Hub.
  2. Maak een .p8 dat kan worden gebruikt voor op tokens gebaseerde verificatie (de nieuwe methode).

De nieuwe methode heeft een aantal voordelen (ten opzichte van het gebruik van certificaten), zoals beschreven in Op tokens gebaseerde (HTTP/2) verificatie voor APNs. Er worden echter stappen gegeven voor beide methoden.

OPTIE 1: Een .p12-pushcertificaat maken dat rechtstreeks kan worden geüpload naar de Notification Hub

  1. Scrol omlaag naar de ingeschakelde optie Pushmeldingen en selecteer vervolgens Configureren om het certificaat te maken.

    Pagina app-id bewerken

  2. Het venster Apple Push Notification service SSL-certificaten wordt weergegeven. Selecteer de knop Certificaat maken in de sectie SSL-ontwikkelingscertificaat.

    Certificaat voor app-id-knop maken

    Het scherm Een nieuw certificaat maken wordt weergegeven.

    Notitie

    In deze zelfstudie wordt een ontwikkelingscertificaat gebruikt. Hetzelfde proces wordt gebruikt bij het registreren van een productiecertificaat. Zorg er wel voor dat u hetzelfde certificaattype gebruikt als u meldingen verzendt.

  3. Selecteer Bestand kiezen, blader naar de locatie waar u het CSR-bestand hebt opgeslagen bij de eerste taak en dubbelklik vervolgens op de naam van het certificaat om het te laden. Selecteer vervolgens Doorgaan.

  4. Nadat de portal het certificaat heeft gemaakt, selecteert u de knop Downloaden. Sla het certificaat op en onthoud de locatie waar het wordt opgeslagen.

    Download-pagina voor gemaakte certificaat

    Het certificaat is nu gedownload en op uw computer in de map Downloads opgeslagen.

    Certificaatbestand zoeken in de map Downloads

    Notitie

    Standaard krijgt het gedownloade ontwikkelingscertificaat de naam aps_development.cer.

  5. Dubbelklik op het gedownloade pushcertificaat aps_development.cer. Nu wordt het nieuwe certificaat in de sleutelhanger geïnstalleerd, zoals op de volgende afbeelding wordt weergegeven:

    Certificatenlijst in Sleutelhangertoegang geeft nieuw certificaat weer

    Notitie

    Hoewel de naam in uw certificaat kan afwijken, wordt de naam voorafgegaan door Apple Development iOS Push Services.

  6. In Sleutelhangertoegang klikt u met de rechtermuisknop op het nieuwe pushcertificaat dat u hebt gemaakt in de categorie Certificaten. Selecteer Exporteren, geef het bestand een naam, selecteer de indeling .p12 en klik vervolgens op Opslaan.

    Certificaat exporteren in p12-indeling

    U kunt ervoor kiezen om het certificaat met een wachtwoord te beveiligen, maar dit is optioneel. Klik op OK als u het maken van wachtwoorden wilt overslaan. Noteer de bestandsnaam en locatie van het geëxporteerde .p12-certificaat. Ze worden gebruikt om verificatie met APNs mogelijk te maken.

    Notitie

    Uw .p12-bestandsnaam en-locatie kunnen afwijken van wat er in deze zelfstudie wordt afgebeeld.

OPTIE 2: Een .p8-certificaat maken dat kan worden gebruikt voor op tokens gebaseerde verificatie

  1. Noteer de volgende details:

    • App-id-voorvoegsel (dit is een Team-id)
    • Bundel-id
  2. Klik in Certificaten, Id-profielen &op Sleutels.

    Notitie

    Als u al een sleutel voor APNS hebt geconfigureerd, kunt u het .p8-certificaat dat u hebt gedownload opnieuw gebruiken nadat het is gemaakt. Als dat het geval is, kunt u de stappen 3 tot 5 negeren.

  3. Klik op de knop + (of de knop Een sleutel maken) om een nieuwe sleutel te maken.

  4. Geef een geschikte waarde voor Sleutelnaam op, selecteer de optie Apple Push Notifications service (APNs) en klik vervolgens op Doorgaan, gevolgd door Registreren op het volgende scherm.

  5. Klik op Downloaden, verplaats het bestand .p8 (voorafgegaan door AuthKey_ ) naar een veilige lokale map en klik vervolgens op Klaar.

    Notitie

    Zorg ervoor dat uw .p8-bestand op een veilige plaats is opgeslagen (en sla een back-up op). Nadat de sleutel is gedownload, kan deze niet opnieuw worden gedownload omdat de serverkopie wordt verwijderd.

  6. Klik in Sleutels op de sleutel die u zojuist hebt gemaakt (of een bestaande sleutel als u ervoor hebt gekozen om deze te gebruiken).

  7. Noteer de waarde van Sleutel-id.

  8. Open uw .p8-certificaat in een geschikte toepassing naar keuze, zoals Visual Studio Code en noteer de sleutelwaarde. Dit is de waarde tussen -----BEGIN PRIVATE KEY----- en -----END PRIVATE KEY----- .

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    Notitie

    Dit is de tokenwaarde die later wordt gebruikt om Notification Hubte configureren.

Aan het einde van deze stappen moet u de volgende informatie gebruiken voor later in Uw Notification Hub configureren met APNs-gegevens:

  • Team-id (zie stap 1)
  • Bundel-id (zie stap 1)
  • Sleutel-id (zie stap 7)
  • Tokenwaarde, d.w.z. de .p8-sleutelwaarde (zie stap 8)

Een inrichtingsprofiel voor de app maken

  1. Ga terug naar de iOS-inrichtingsportal, selecteer Certificaten, Id-profielen&, selecteer Profielen in het linkermenu en selecteer + vervolgens om een nieuw profiel te maken. Het scherm Een nieuw inrichtingsprofiel registreren wordt weergegeven.

  2. Selecteer Ontwikkeling iOS-app onder Ontwikkeling als het inrichtingsprofieltype en selecteer vervolgens Doorgaan.

    Lijst met inrichtingsprofielen

  3. Selecteer vervolgens in de vervolgkeuzelijst App-id de app-id die u hebt gemaakt en selecteer Doorgaan.

    Selecteer de app-id

  4. Selecteer in het venster Certificaten selecteren het ontwikkelingscertificaat dat u gebruikt voor het ondertekenen bij programmacode en selecteer Doorgaan. Dit certificaat is niet het pushcertificaat dat u hebt gemaakt. Als er nog geen bestaat, moet u er een maken. Als er wel een certificaat bestaat, gaat u verder met de volgende stap. Een ontwikkelingscertificaat maken als er geen bestaat:

    1. Als u Geen certificaten beschikbaar ziet, selecteert u Certificaat maken.
    2. In de sectie Software selecteert u Apple Development. Selecteer vervolgens Doorgaan.
    3. In het scherm Een nieuw certificaat maken selecteert u Bestand kiezen.
    4. Blader naar het certificaat Aanvraag certificaatondertekening dat u eerder hebt gemaakt, selecteer het en selecteer Openen.
    5. Selecteer Doorgaan.
    6. Download het ontwikkelingscertificaat en onthoud de locatie waar het is opgeslagen.
  5. Ga terug naar de pagina Certificaten, Id-profielen&, selecteer Profielen in het linkermenu en selecteer + vervolgens om een nieuw profiel te maken. Het scherm Een nieuw inrichtingsprofiel registreren wordt weergegeven.

  6. Selecteer in het venster Certificaten selecteren het ontwikkelingscertificaat dat u zojuist hebt gemaakt. Selecteer vervolgens Doorgaan.

  7. Selecteer vervolgens de apparaten die u voor de tests wilt gebruiken en selecteer Doorgaan.

  8. Kies ten slotte een naam voor het profiel in Inrichtingsprofielnaamen selecteer Genereren.

    Een naam kiezen voor het inrichtingsprofiel

  9. Wanneer het nieuwe inrichtingsprofiel is gemaakt, selecteert u Downloaden. Onthoud de locatie waar het wordt opgeslagen.

  10. Blader naar de locatie van het inrichtingsprofiel en dubbelklik erop om het te installeren op uw Xcode-ontwikkelingscomputer.

Een Notification Hub maken

In deze sectie maakt u een Notification Hub en configureert u verificatie met APNs met het .p12-pushcertificaat of op tokens gebaseerde verificatie. Als u een Notification Hub wilt gebruiken die u al hebt gemaakt, kunt u doorgaan naar stap 5.

  1. Meld u aan bij de Azure-portal.

  2. Selecteer Alle services in het menu aan de linkerkant en selecteer Notification Hubs in de sectie Mobiel. Selecteer het sterpictogram naast de servicenaam om de service toe te voegen aan de sectie FAVORIETEN in het menu aan de linkerkant. Nadat u Notification Hubs hebt toegevoegd aan FAVORIETEN, selecteert u dit in het linkermenu.

    Azure Portal - Notification Hubs selecteren

  3. Op de Notification Hubs-pagina selecteert u Toevoegen op de werkbalk.

    Toevoegen van Notification Hubs - knop op de werkbalk

  4. Voer op de pagina Notification Hub de volgende stappen uit:

    1. Voer een naam in Notification Hub in.

    2. Voer een naam in Een nieuwe naamruimte maken in. Een naamruimte bevat een of meer hubs.

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

    4. Selecteer een bestaande resourcegroep in Resourcegroep of maak een naam voor een nieuwe resourcegroep.

    5. Selecteer Maken.

      Azure Portal - eigenschappen van de Notification Hub instellen

  5. Selecteer Meldingen (het belpictogram) en selecteer vervolgens Ga naar resource. U kunt ook de lijst op de pagina Notification Hubs vernieuwen en uw hub selecteren.

    Azure Portal - meldingen -> Naar de resource gaan

  6. Selecteer Toegangsbeleid in de lijst. U ziet dat de twee verbindingsreeksen voor u beschikbaar zijn. Later moet u er pushmeldingen mee afhandelen.

    Belangrijk

    Gebruik niet het beleid DefaultFullSharedAccessSignature in uw toepassing. Deze mag alleen in uw back-end worden gebruikt.

    Azure Portal - verbindingsreeksen voor de Notification Hub

Uw Notification Hub configureren met APNs-gegevens

Selecteer onder Notification Services de optie Apple (APNs) en voer vervolgens de juiste stappen uit op basis van de methode die u eerder hebt gekozen in de sectie Een certificaat maken voor Notification Hubs.

Notitie

Gebruik Productie voor Toepassingsmodus alleen als u pushmeldingen wilt verzenden naar gebruikers die uw app in de Store hebben gekocht.

OPTIE 1: Een .p12-pushcertificaat gebruiken

  1. Selecteer Certificaat.

  2. Selecteer het bestandspictogram.

  3. Selecteer het .p12-bestand dat u eerder hebt geëxporteerd en selecteer vervolgens Openen.

  4. Geef indien nodig het juiste wachtwoord op.

  5. Selecteer de modus Sandbox.

    APNs-certificering in Azure Portal configureren

  6. Selecteer Opslaan.

OPTIE 2: Op tokens gebaseerde verificatie gebruiken

  1. Selecteer Token.

  2. Voer de volgende waarden in die u eerder hebt verkregen:

    • Sleutel-id
    • Bundel-id
    • Team-id
    • Token
  3. Kies Sandbox.

  4. Selecteer Opslaan.

U hebt nu uw Notification Hub geconfigureerd met APNs. U beschikt ook over de verbindingsreeksen om uw app te registreren en pushmeldingen te verzenden.

De Notification Hub configureren voor APNS

  1. Start op uw Mac sleutelhangertoegang. Open Mijn certificaten in de linkernavigatiebalk onder Categorie. Zoek het SSL-certificaat dat u in de vorige sectie hebt gedownload en geef de inhoud ervan weer. Selecteer alleen het certificaat (selecteer niet de persoonlijke sleutel). Exporteer het vervolgens.
  2. Selecteer In de Azure Portal alleApp Servicesbladeren>. Selecteer vervolgens de back-end van uw Mobile Apps.
  3. Selecteer onder InstellingenApp Service Push. Selecteer vervolgens de naam van de Notification Hub.
  4. Ga naar het uploadcertificaat van Apple Push Notification Services>. Upload het .p12-bestand en selecteer de juiste modus (afhankelijk van of het SSL-certificaat van uw client van eerder productie of sandbox is). Sla eventuele wijzigingen op.

Uw service is nu geconfigureerd voor gebruik met pushmeldingen in iOS.

Vervolgens configureert u de iOS-projectinstelling in Xamarin Studio of Visual Studio.

Het iOS-project configureren in Xamarin Studio

  1. Open Info.plist in Xamarin.Studio en werk de bundel-id bij met de bundel-id die u eerder hebt gemaakt met uw nieuwe app-id.

  2. Schuif omlaag naar achtergrondmodi. Selecteer het vak Achtergrondmodi inschakelen en het vak Externe meldingen .

  3. Dubbelklik op uw project in het deelvenster Oplossing om Projectopties te openen.

  4. Kies onder BuildiOS-bundelondertekening en selecteer het bijbehorende identiteits- en inrichtingsprofiel dat u zojuist hebt ingesteld voor dit project.

    Dit zorgt ervoor dat het project het nieuwe profiel gebruikt voor het ondertekenen van code. Zie Xamarin Device Provisioning voor de officiële documentatie voor het inrichten van Xamarin-apparaten.

Het iOS-project configureren in Visual Studio

  1. Klik in Visual Studio met de rechtermuisknop op het project en klik vervolgens op Eigenschappen.

  2. Klik op de eigenschappenpagina's op het tabblad iOS-toepassing en werk de id bij met de id die u eerder hebt gemaakt.

  3. Selecteer op het tabblad Ondertekening van iOS-bundel het bijbehorende identiteits- en inrichtingsprofiel dat u zojuist hebt ingesteld voor dit project.

    Dit zorgt ervoor dat het project het nieuwe profiel gebruikt voor het ondertekenen van code. Zie Xamarin Device Provisioning voor de officiële documentatie voor het inrichten van Xamarin-apparaten.

  4. Dubbelklik op Info.plist om deze te openen en schakel RemoteNotifications vervolgens in onder Achtergrondmodi.

Pushmeldingen toevoegen aan uw iOS-app

  1. Open AppDelegate.cs in het iOS-project en voeg de volgende instructie toe aan het begin van het codebestand.

    using Newtonsoft.Json.Linq;
    
  2. Voeg in de AppDelegate-klasse een onderdrukking toe voor de gebeurtenis RegisteredForRemoteNotifications om te registreren voor meldingen:

    public override void RegisteredForRemoteNotifications(UIApplication application,
        NSData deviceToken)
    {
        const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(messageParam)\"}}";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
            {
                {"body", templateBodyAPNS}
            };
    
        // Register for push with your mobile app
        Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush();
        push.RegisterAsync(deviceToken, templates);
    }
    
  3. Voeg in AppDelegate ook de volgende onderdrukking toe voor de gebeurtenis-handler DidReceiveRemoteNotification :

    public override void DidReceiveRemoteNotification(UIApplication application,
        NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
    {
        NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
    
        string alert = string.Empty;
        if (aps.ContainsKey(new NSString("alert")))
            alert = (aps[new NSString("alert")] as NSString).ToString();
    
        //show alert
        if (!string.IsNullOrEmpty(alert))
        {
            UIAlertView avAlert = new UIAlertView("Notification", alert, null, "OK", null);
            avAlert.Show();
        }
    }
    

    Met deze methode worden binnenkomende meldingen verwerkt terwijl de app wordt uitgevoerd.

  4. Voeg in de Klasse AppDelegate de volgende code toe aan de methode FinishedLaunching :

    // Register for push notifications.
    var settings = UIUserNotificationSettings.GetSettingsForTypes(
        UIUserNotificationType.Alert
        | UIUserNotificationType.Badge
        | UIUserNotificationType.Sound,
        new NSSet());
    
    UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
    UIApplication.SharedApplication.RegisterForRemoteNotifications();
    

    Dit maakt ondersteuning mogelijk voor externe meldingen en aanvragen voor pushregistratie.

Uw app is nu bijgewerkt ter ondersteuning van pushmeldingen.

Pushmeldingen testen in uw iOS-app

  1. Klik met de rechtermuisknop op het iOS-project en klik op Instellen als Opstartproject.

  2. Druk op de knop Uitvoeren of F5 in Visual Studio om het project te bouwen en de app te starten op een iOS-apparaat. Klik vervolgens op OK om pushmeldingen te accepteren.

    Notitie

    U moet expliciet pushmeldingen vanuit uw app accepteren. Deze aanvraag treedt alleen op wanneer de app voor het eerst wordt uitgevoerd.

  3. Typ een taak in de app en klik vervolgens op het plusteken (+).

  4. Controleer of er een melding is ontvangen en klik vervolgens op OK om de melding te sluiten.

Windows-projecten configureren en uitvoeren (optioneel)

Deze sectie is bedoeld voor het uitvoeren van de Xamarin.Forms WinApp- en WinPhone81-projecten voor Windows-apparaten. Deze stappen ondersteunen ook Universeel Windows-platform (UWP)-projecten. Als u niet met Windows-apparaten werkt, kunt u deze sectie overslaan.

Uw Windows-app registreren voor pushmeldingen met Windows Notification Service (WNS)

  1. Klik in Visual Studio Solution Explorer met de rechtermuisknop op het Windows Store-app-project. Selecteer vervolgens Store-app>koppelen aan de Store.

    App koppelen aan Windows Store

  2. Selecteer Volgende in de wizard. Meld u vervolgens aan met uw Microsoft-account. Typ in Een nieuwe app-naam reserveren een naam voor uw app en selecteer Vervolgens Reserveren.

  3. Nadat de app-registratie is gemaakt, selecteert u de naam van de nieuwe app. Selecteer Volgende en selecteer Vervolgens Koppelen. Met dit proces worden de vereiste Registratiegegevens voor Windows Store toegevoegd aan het toepassingsmanifest.

  4. Herhaal stap 1 en 3 voor het Windows Phone Store-app-project met behulp van dezelfde registratie die u eerder hebt gemaakt voor de Windows Store-app.

  5. Ga naar het Windows-ontwikkelaarscentrum en meld u aan met uw Microsoft-account. Selecteer in Mijn apps de nieuwe app-registratie. Vouw vervolgensServices-pushmeldingen> uit.

  6. Selecteer op de pagina Pushmeldingen onder Windows Push Notification Services (WNS) en Microsoft Azure Mobile AppsLive Services site. Noteer de waarden van de pakket-SID en de huidige waarde in Het toepassingsgeheim.

    App-instelling in het ontwikkelaarscentrum

    Belangrijk

    Het toepassingsgeheim en de pakket-SID zijn belangrijke beveiligingsreferenties. Deel deze waarden niet met iemand of distribueer ze niet met uw app.

De Notification Hub configureren voor WNS

  1. Selecteer In de Azure Portal alleApp Servicesbladeren>. Selecteer vervolgens de back-end van uw Mobile Apps. Selecteer onder InstellingenApp Service Push. Selecteer vervolgens de naam van de Notification Hub.

  2. Ga naar Windows (WNS). Voer vervolgens de beveiligingssleutel (clientgeheim) en pakket-SID in die u hebt verkregen van de Live Services-site. Selecteer Vervolgens Opslaan.

    De WNS-sleutel instellen in de portal

Uw back-end is nu geconfigureerd voor het gebruik van WNS om pushmeldingen te verzenden.

Pushmeldingen toevoegen aan uw Windows-app

  1. Open In Visual Studio App.xaml.cs in een Windows-project en voeg de volgende instructies toe.

    using Newtonsoft.Json.Linq;
    using Microsoft.WindowsAzure.MobileServices;
    using System.Threading.Tasks;
    using Windows.Networking.PushNotifications;
    using <your_TodoItemManager_portable_class_namespace>;
    

    Vervang <your_TodoItemManager_portable_class_namespace> door de naamruimte van uw draagbare project dat de TodoItemManager klasse bevat.

  2. Voeg in App.xaml.cs de volgende Methode InitNotificationsAsync toe:

    private async Task InitNotificationsAsync()
    {
        var channel = await PushNotificationChannelManager
            .CreatePushNotificationChannelForApplicationAsync();
    
        const string templateBodyWNS =
            "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>";
    
        JObject headers = new JObject();
        headers["X-WNS-Type"] = "wns/toast";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
        {
            {"body", templateBodyWNS},
            {"headers", headers} // Needed for WNS.
        };
    
        await TodoItemManager.DefaultManager.CurrentClient.GetPush()
            .RegisterAsync(channel.Uri, templates);
    }
    

    Met deze methode wordt het pushmeldingskanaal opgehaald en wordt een sjabloon geregistreerd voor het ontvangen van sjabloonmeldingen van uw Notification Hub. Een sjabloonmelding die messageParam ondersteunt, wordt aan deze client geleverd.

  3. Werk in App.xaml.cs de definitie van de gebeurtenis-handler onLaunched bij door de async modifier toe te voegen. Voeg vervolgens de volgende regel code toe aan het einde van de methode:

    await InitNotificationsAsync();
    

    Dit zorgt ervoor dat de registratie van pushmeldingen wordt gemaakt of vernieuwd telkens wanneer de app wordt gestart. Het is belangrijk om dit te doen om ervoor te zorgen dat het WNS-pushkanaal altijd actief is.

  4. Open in Solution Explorer voor Visual Studio het bestand Package.appxmanifest en stel Toast Capable in op Ja onder Meldingen.

  5. Bouw de app en controleer of er geen fouten zijn. De client-app moet zich nu registreren voor de sjabloonmeldingen van de back-end van Mobile Apps. Herhaal deze sectie voor elk Windows-project in uw oplossing.

Pushmeldingen testen in uw Windows-app

  1. Klik in Visual Studio met de rechtermuisknop op een Windows-project en klik op Instellen als opstartproject.
  2. Druk op de knop Uitvoeren om het project te bouwen en de app te starten.
  3. Typ in de app een naam voor een nieuw taakitem en klik vervolgens op het pluspictogram (+) om deze toe te voegen.
  4. Controleer of er een melding wordt ontvangen wanneer het item wordt toegevoegd.

Volgende stappen

Meer informatie over pushmeldingen vindt u:

U kunt ook doorgaan met een van de volgende zelfstudies:

  • Verificatie toevoegen aan uw app
    Ontdek hoe u gebruikers van uw app verifieert met een id-provider.
  • Offlinesynchronisatie voor uw app inschakelen
    Ontdek hoe u offlineondersteuning voor uw app toevoegt met behulp van een back-end voor Mobile Apps. Met offlinesynchronisatie kunnen gebruikers communiceren met een mobiele app, zoals het weergeven, toevoegen of wijzigen van gegevens, zelfs als er geen netwerkverbinding is.