Zelfstudie: Pushmeldingen verzenden naar Xamarin.iOS-apps met behulp van Azure Notification Hubs
Overzicht
In deze zelfstudie wordt gedemonstreerd hoe u met Azure Notification Hubs pushmeldingen verzendt naar een iOS-toepassing. U maakt een lege Xamarin.iOS-app die pushmeldingen ontvangt met de Apple Push Notification service (APNs).
Als u klaar bent, kunt u de Notification Hub gebruiken 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 gaat u code maken of bijwerken om de volgende taken uit te voeren:
- Het bestand met de aanvraag voor certificaatondertekening genereren
- Uw app voor pushmeldingen registreren
- Een inrichtingsprofiel voor de app maken
- De Notification Hub configureren voor iOS-pushmeldingen
- Testpushmeldingen verzenden
Vereisten
Azure-abonnement. Als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account voordat u begint.
Meest recente versie van Xcode
Een apparaat dat compatibel is met iOS 10 (of een hogere versie)
Apple Developer Program-lidmaatschap
-
Notitie
Vanwege configuratievereisten voor iOS-pushmeldingen moet u de voorbeeldtoepassing op een fysiek iOS-apparaat (iPhone of iPad) implementeren en testen in plaats van in de simulator.
Het voltooien van deze zelfstudie is een vereiste voor alle andere Notification Hubs-zelfstudies voor Xamarin.iOS-apps.
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.
Voer op uw Mac het hulpprogramma Sleutelhangertoegang uit. Dit kan worden gestart vanuit de map Hulpprogramma's of de map Overige in Launchpad.
Selecteer Toegang tot sleutelhanger, vouw Certificaatassistent uit en selecteer vervolgens Een certificaat bij een certificaatautoriteit aanvragen.
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.
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.
Voer een naam in voor het CSR-bestand in Opslaan als, selecteer de locatie in Waar en selecteer vervolgens Opslaan.
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.
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.
Selecteer op het scherm Een nieuwe id registreren het keuzerondje App-id's. Selecteer vervolgens Doorgaan.
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 de formulier organisatie-id.Productnaam zoals vermeld in de app-distributiehandleiding. 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.
Pushmeldingen: controleer de optie Pushmeldingen in de sectie Mogelijkheden .
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.
Nadat u Registreren hebt geselecteerd, ziet u de nieuwe app-id als een regelitem in de pagina Certificaten, id's en profielen.
Ga op de pagina Certificaten, id's en profielen onder Id's naar het regelitem App-id dat u zojuist hebt gemaakt, en selecteer de bijbehorende rij om het scherm De configuratie van uw app-id 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:
- Maak een .p12 dat rechtstreeks kan worden geüpload naar de Notification Hub.
- 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 naar Notification Hub kan worden geüpload
Scrol omlaag naar de ingeschakelde optie Pushmeldingen en selecteer vervolgens Configureren om het certificaat te maken.
Het venster Apple Push Notification service SSL-certificaten wordt weergegeven. Selecteer de knop Certificaat maken in de sectie SSL-ontwikkelingscertificaat.
Het scherm Een nieuw certificaat maken wordt weergegeven.
Notitie
In deze zelfstudie wordt een ontwikkelingscertificaat gebruikt, dat uw app gebruikt om een uniek apparaattoken te genereren. Hetzelfde proces wordt gebruikt bij het registreren van een productiecertificaat. Zorg er wel voor dat u hetzelfde certificaattype gebruikt als u meldingen verzendt.
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.
Nadat de portal het certificaat heeft gemaakt, selecteert u de knop Downloaden. Sla het certificaat op en onthoud de locatie waar het wordt opgeslagen.
Het certificaat is nu gedownload en op uw computer in de map Downloads opgeslagen.
Notitie
Standaard krijgt het gedownloade ontwikkelingscertificaat de naam aps_development.cer.
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:
Notitie
Hoewel de naam in uw certificaat kan afwijken, wordt de naam voorafgegaan door Apple Development iOS Push Services.
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.
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 verificatie op basis van tokens
Noteer de volgende details:
- App-id-voorvoegsel (dit is een Team-id)
- Bundel-id
Als u teruggaat naar Certificaten, id's en profielen, klikt u 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.
Klik op de knop + (of de knop Een sleutel maken) om een nieuwe sleutel te maken.
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.
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.
Klik in Sleutels op de sleutel die u zojuist hebt gemaakt (of een bestaande sleutel als u ervoor hebt gekozen om deze te gebruiken).
Noteer de waarde van Sleutel-id.
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
Ga terug naar de iOS Provisioning Portal, selecteer Certificaten, id's en profielen, selecteer Profielen in het linkermenu en selecteer vervolgens + om een nieuw profiel te maken. Het scherm Een nieuw inrichtingsprofiel registreren wordt weergegeven.
Selecteer Ontwikkeling iOS-app onder Ontwikkeling als het inrichtingsprofieltype en selecteer vervolgens Doorgaan.
Selecteer vervolgens in de vervolgkeuzelijst App-id de app-id die u hebt gemaakt en selecteer Doorgaan.
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:
- Als u Geen certificaten beschikbaar ziet, selecteert u Certificaat maken.
- In de sectie Software selecteert u Apple Development. Selecteer vervolgens Doorgaan.
- In het scherm Een nieuw certificaat maken selecteert u Bestand kiezen.
- Blader naar het certificaat Aanvraag certificaatondertekening dat u eerder hebt gemaakt, selecteer het en selecteer Openen.
- Selecteer Doorgaan.
- Download het ontwikkelingscertificaat en onthoud de locatie waar het is opgeslagen.
Ga terug naar de pagina Certificaten, id's en profielen, selecteer Profielen in het linkermenu en selecteer vervolgens + om een nieuw profiel te maken. Het scherm Een nieuw inrichtingsprofiel registreren wordt weergegeven.
Selecteer in het venster Certificaten selecteren het ontwikkelingscertificaat dat u zojuist hebt gemaakt. Selecteer vervolgens Doorgaan.
Selecteer vervolgens de apparaten die u voor de tests wilt gebruiken en selecteer Doorgaan.
Kies ten slotte een naam voor het profiel in Inrichtingsprofielnaamen selecteer Genereren.
Wanneer het nieuwe inrichtingsprofiel is gemaakt, selecteert u Downloaden. Onthoud de locatie waar het wordt opgeslagen.
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.
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.
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
Als u uw app ontwikkelt met een App Store- of ad-hocdistributieprofiel, gebruikt u Productie als Toepassingsmodus. Zo kan uw apparaat pushmeldingen verzenden naar gebruikers die uw app in de Store hebben gekocht.
OPTIE 1: Een .p12-pushcertificaat gebruiken
Selecteer Certificaat.
Selecteer het bestandspictogram.
Selecteer het .p12-bestand dat u eerder hebt geëxporteerd en selecteer vervolgens Openen.
Geef indien nodig het juiste wachtwoord op.
Selecteer de modus Sandbox.
Selecteer Opslaan.
OPTIE 2: Verificatie op basis van tokens gebruiken
Selecteer Token.
Voer de volgende waarden in die u eerder hebt verkregen:
- Sleutel-id
- Bundel-id
- Team-id
- Token
Kies Sandbox.
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.
Uw app verbinden met de Notification Hub
Een nieuw project maken
Maak in Visual Studio een nieuw iOS-project, selecteer de sjabloon Single View App (Toepassing met één weergave) en klik op Volgende.
Voer de app-naam en organisatie-id in, klik op Volgende en vervolgens op Maken
Dubbelklik in de oplossingsweergave op Into.plist en zorg ervoor dat bij Identiteit de bundel-id overeenkomt met de id die werd gebruikt bij het maken van uw inrichtingsprofiel. Controleer onder Ondertekening of uw Developer-account is geselecteerd bij Team, of 'Ondertekening automatisch beheren' is geselecteerd en uw certificaat voor ondertekening en het profiel voor inrichting automatisch zijn geselecteerd.
Dubbelklik in de oplossingsweergave op de
Entitlements.plist
en controleer of Pushmeldingen inschakelen is ingeschakeld.Voeg het Azure Messaging-pakket toe. Klik in de oplossingsweergave met de rechtermuisknop op het project en selecteer Toevoegen>NuGet-pakketten toevoegen. Zoek naar Xamarin.Azure.NotificationHubs.iOS en voeg het pakket toe aan uw project.
Voeg een nieuw bestand toe aan de klasse en geef deze de naam
Constants.cs
. Voeg de volgende variabelen toe en vervang de tijdelijke aanduidingen voor tekenreeksen door dehubname
enDefaultListenSharedAccessSignature
die u eerder hebt genoteerd.// Azure app-specific connection string and hub path public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>"; public const string NotificationHubName = "<Azure Notification Hub Name>";
Voeg in
AppDelegate.cs
de volgende using-instructie toe:using WindowsAzure.Messaging.NotificationHubs; using UserNotifications
Maak een implementatie van de
MSNotificationHubDelegate
AppDelegate.cs
:public class AzureNotificationHubListener : MSNotificationHubDelegate { public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message) { } }
In
AppDelegate.cs
werkt uFinishedLaunching()
zo bij dat deze overeenkomt met de volgende code:public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { // Set the Message listener MSNotificationHub.SetDelegate(new AzureNotificationHubListener()); // Start the SDK MSNotificationHub.Start(ListenConnectionString, NotificationHubName); return true; }
Implementeer
AppDelegate.cs
deDidReceivePushNotification
methode voor deAzureNotificationHubListener
klasse in:public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message) { // This sample assumes { aps: { alert: { title: "Hello", body: "World" } } } var alertTitle = message.Title ?? "Notification"; var alertBody = message.Body; var myAlert = UIAlertController.Create(alertTitle, alertBody, UIAlertControllerStyle.Alert); myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null); }
Voer de app uit op uw apparaat.
Testpushmeldingen verzenden
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 Apps of ASP.NET verzonden met 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 iOS-apparaten die zijn geregistreerd bij de back-end. Als u wilt weten hoe u pushmeldingen kunt verzenden naar specifieke iOS-apparaten, gaat u verder met de volgende zelfstudie: