Självstudie: Skicka push-meddelanden till Xamarin.iOS-appar med Hjälp av Azure Notification Hubs

Översikt

I den här självstudiekursen beskrivs hur du använder Azure Notification Hubs för att skicka push-meddelanden till en iOS-app. Du skapar en tom Xamarin.iOS-app som tar emot push-meddelanden med hjälp av Apple Push Notification Service (APNs).

När du är klar kan du använda 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älvstudiekursen får du skapa/uppdatera kod för att utföra följande uppgifter:

  • Generera filen för begäran om certifikatsignering
  • Registrera din app för push-meddelanden
  • Skapa en etableringsprofil för appen
  • Konfigurera din meddelandehubb för att skicka push-meddelanden till iOS
  • Skicka test-push-meddelanden

Förutsättningar

  • Azure-prenumeration. Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt Azure-konto innan du börjar.

  • Den senaste versionen av XCode

  • En enhet som är kompatibel med iOS 10 (eller senare version)

  • Medlemskap i Apple Developer Program.

  • Visual Studio för Mac

    Kommentar

    På grund av konfigurationskrav för iOS-pushmeddelanden måste du distribuera och testa exempelappen på en fysisk iOS-enhet (iPhone eller iPad) i stället för i simulatorn.

Du måste slutföra den här självstudiekursen innan du påbörjar någon annan kurs om Notification Hubs för Xamarin.iOS-appar.

Generera begärandefilen för certifikatsignering

Apple Push Notification Service (APN) använder certifikat för att autentisera dina push-meddelanden. Följ de här instruktionerna för att skapa nödvändiga push-certifikat för att skicka och ta emot meddelanden. Mer information om de här koncepten finns i den officiella Apple Push Notification Service-dokumentationen.

Generera CSR-filen (Certificate Signing Request), som Apple använder för att generera ett signerat push-certifikat.

  1. Kör Nyckelhanteraren på din Mac. Den kan öppnas från mappen Verktyg eller mappen Annan på Startrutan.

  2. Välj Nyckelringsåtkomst, expandera Certifikatassistenten och välj sedan Begär ett certifikat från en certifikatutfärdare.

    Use Keychain Access to request a new certificate

    Kommentar

    Som standard väljer Nyckelringsåtkomst det första objektet i listan. Detta kan vara ett problem om du är i kategorin Certifikat och Apple Worldwide Developer Relations Certification Authority inte är det första objektet i listan. Kontrollera att du har ett objekt som inte är nyckelobjekt eller att nyckeln för Apple Worldwide Developer Relations Certification Authority har valts innan du genererar CSR (certifikatsigneringsbegäran).

  3. Välj användarens e-postadress, ange värdet Eget namn, se till att du anger Sparad på disk och välj sedan Fortsätt. Lämna CA:s e-postadress tom eftersom den inte krävs.

    Required certificate information

  4. Ange ett namn för CSR-filen i Spara som, välj platsen i Var och välj sedan Spara.

    Choose a file name for the certificate

    Den här åtgärden sparar CSR-filen på den valda platsen. Standardplatsen är Desktop. Kom ihåg den plats du valde för filen.

Registrera sedan din app med Apple, aktivera push-meddelanden och ladda upp den exporterade CSR:en för att skapa ett push-certifikat.

Registrera din app för push-meddelanden

Om du vill skicka push-meddelanden till en iOS-app registrerar du ditt program med Apple och registrerar dig för push-meddelanden.

  1. Om du inte redan har registrerat din app bläddrar du till iOS-etableringsportalen i Apple Developer Center. Logga in på portalen med ditt Apple-ID och välj Identifierare. Välj + sedan för att registrera en ny app.

    iOS Provisioning Portal App IDs page

  2. På skärmen Registrera en ny identifierare väljer du alternativknappen App-ID:n. Välj sedan Fortsätt.

    iOS Provisioning Portal register new ID page

  3. Uppdatera följande tre värden för din nya app och välj sedan Fortsätt:

    • Beskrivning: Ange ett beskrivande namn för din app.

    • Paket-ID: Ange ett paket-ID för formuläret Organisationsidentifierare.Produktnamn enligt beskrivningen i appdistributionsguiden. Värdena Organisationsidentifierare och Produktnamn måste matcha organisationsidentifieraren och produktnamnet som du använder när du skapar Xcode-projektet. I följande skärmbild används NotificationHubs-värdet som organisationsidentifierare och getstarted-värdet används som produktnamn. Kontrollera att värdet för Paketidentifierare matchar värdet i Xcode-projektet, så att Xcode använder rätt publiceringsprofil.

      iOS Provisioning Portal register app ID page

    • Push-meddelanden: Kontrollera alternativet Push-meddelanden i avsnittet Funktioner .

      Form to register a new App ID

      Den här åtgärden genererar ditt app-ID och begär att du bekräftar informationen. Välj Fortsätt och välj sedan Registrera för att bekräfta det nya app-ID:t.

      Confirm new App ID

      När du har valt Registrera visas det nya app-ID:t som ett radobjekt på sidan Certifikat, Identifierare och profiler.

  4. På sidan Certifikat, Identifierare och profiler under Identifierare letar du upp det radobjekt för app-ID som du nyss skapade och väljer dess rad för att visa skärmen Redigera konfiguration av app-ID.

Skapa ett certifikat för Notification Hubs

Ett certifikat krävs för att meddelandehubben ska fungera med APNS. Detta kan göras på något av två sätt:

  1. Skapa en .p12 som kan laddas upp direkt till Notification Hub.
  2. Skapa en .p8 som kan användas för tokenbaserad autentisering (den nyare metoden).

Den nyare metoden har ett antal fördelar (jämfört med att använda certifikat) som dokumenteras i tokenbaserad autentisering (HTTP/2) för APNS. Det har dock vidtagits åtgärder för båda metoderna.

ALTERNATIV 1: Skapa ett .p12-pushcertifikat som kan laddas upp direkt till Notification Hub

  1. Rulla ned till det markerade alternativet Push-meddelanden och välj sedan Konfigurera för att skapa certifikatet.

    Edit App ID page

  2. Fönstret Apple Push Notification Service SSL Certificates (SSL-certifikat för Apple Push Notification Service) visas. Välj knappen Skapa certifikat under avsnittet Development SSL Certificate (Utvecklings-SSL-certifikat).

    Create certificate for App ID button

    Skärmen Skapa ett nytt certifikat visas.

    Kommentar

    I den här självstudien används ett utvecklingscertifikat som appen använder för att generera en unik enhetstoken. Du använder samma process när du registrerar ett driftscertifikat. Se bara till att du använder samma certifikattyp när du skickar meddelanden.

  3. Välj Välj fil, bläddra till den plats där du sparade CSR-filen från den första uppgiften och dubbelklicka sedan på certifikatnamnet för att läsa in den. Välj sedan Fortsätt.

  4. När portalen har skapat certifikatet väljer du knappen Ladda ned . Spara certifikatet och kom ihåg den plats där det sparas.

    Generated certificate download page

    Certifikatet laddas ned och sparas på datorn i mappen Nedladdningar .

    Locate certificate file in the Downloads folder

    Kommentar

    Som standard heter det nedladdade utvecklingscertifikatet aps_development.cer.

  5. Dubbelklicka på det hämtade push-certifikatet aps_development.cer. Den här åtgärden installerar det nya certifikatet i nyckelringen enligt följande bild:

    Keychain access certificates list showing new certificate

    Kommentar

    Även om namnet i certifikatet kan vara annorlunda, kommer namnet att prefixas med Apple Development iOS Push Services.

  6. I nyckelhanteraren högerklickar du på det nya push-certifikatet som du skapade i Certifikat-kategorin. Välj Exportera, namnge filen, välj formatet .p12 och välj sedan Spara.

    Export certificate as p12 format

    Du kan välja att skydda certifikatet med ett lösenord, men det är valfritt. Klicka på OK om du vill kringgå skapande av lösenord. Anteckna filnamnet och platsen dit .p12-certifikatet exporterats. De används för att aktivera autentisering med APN:er.

    Kommentar

    Filnamnet och platsen för .p12 kan skilja sig från vad som visas i den här självstudien.

ALTERNATIV 2: Skapa ett .p8-certifikat som kan användas för tokenbaserad autentisering

  1. Anteckna följande information:

    • App-ID-prefix (det här är ett team-ID)
    • Paket-ID
  2. Gå tillbaka till Certifikat, Identifierare och profiler och klicka på Nycklar.

    Kommentar

    Om du redan har en nyckel konfigurerad för APNS kan du återanvända det .p8-certifikat som du laddade ned direkt efter att det skapades. I så fall kan du ignorera steg 3 till och med 5.

  3. + Klicka på knappen (eller knappen Skapa en nyckel) för att skapa en ny nyckel.

  4. Ange ett lämpligt nyckelnamnsvärde , kontrollera sedan alternativet Apple Push Notifications Service (APN) och klicka sedan på Fortsätt, följt av Registrera på nästa skärm.

  5. Klicka på Ladda ned och flytta sedan .p8-filen (prefixet med AuthKey_) till en säker lokal katalog och klicka sedan på Klar.

    Kommentar

    Se till att hålla .p8-filen på en säker plats (och spara en säkerhetskopia). När du har laddat ned nyckeln kan den inte laddas ned igen eftersom serverkopian tas bort.

  6. Nycklar klickar du på den nyckel som du nyss skapade (eller en befintlig nyckel om du har valt att använda den i stället).

  7. Anteckna nyckel-ID-värdet.

  8. Öppna ditt .p8-certifikat i ett lämpligt program som du väljer, till exempel Visual Studio Code , och anteckna sedan nyckelvärdet. Det här är värdet mellan -----BEGIN PRIVATE KEY----- och -----END PRIVATE KEY----- .

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

    Kommentar

    Det här är det tokenvärde som ska användas senare för att konfigurera Notification Hub.

I slutet av dessa steg bör du ha följande information för användning senare i Konfigurera din meddelandehubb med APN-information:

  • Team-ID (se steg 1)
  • Paket-ID (se steg 1)
  • Nyckel-ID (se steg 7)
  • Tokenvärde , d.v.s. nyckelvärdet .p8 (se steg 8)

Skapa en etableringsprofil för appen

  1. Gå tillbaka till iOS-etableringsportalen, välj Certifikat, Identifierare och profiler, välj Profiler på den vänstra menyn och välj + sedan för att skapa en ny profil. Skärmen Registrera en ny etableringsprofil visas.

  2. Välj iOS App Development under Utveckling som etableringsprofiltyp och välj sedan Fortsätt.

    Provisioning profile list

  3. Välj sedan det app-ID som du skapade i listrutan App-ID och välj Fortsätt.

    Select the App ID

  4. I fönstret Välj certifikat väljer du det utvecklingscertifikat som du använder för kodsignering och väljer Fortsätt. Det här certifikatet är inte det push-certifikat som du skapade. Om det inte finns någon måste du skapa den. Om det finns ett certifikat går du vidare till nästa steg. Så här skapar du ett utvecklingscertifikat om det inte finns något:

    1. Om det inte finns några tillgängliga certifikat väljer du Skapa certifikat.
    2. I avsnittet Programvara väljer du Apple Development. Välj sedan Fortsätt.
    3. På skärmen Skapa ett nytt certifikat väljer du Välj fil.
    4. Bläddra till certifikatet för certifikatsigneringsbegäran som du skapade tidigare, välj det och välj sedan Öppna.
    5. Välj Fortsätt.
    6. Ladda ned utvecklingscertifikatet och kom ihåg platsen där det sparas.
  5. Gå tillbaka till sidan Certifikat, Identifierare och profiler , välj Profiler på den vänstra menyn och välj + sedan för att skapa en ny profil. Skärmen Registrera en ny etableringsprofil visas.

  6. I fönstret Välj certifikat väljer du det utvecklingscertifikat som du nyss skapade. Välj sedan Fortsätt.

  7. Välj sedan de enheter som ska användas för testning och välj Fortsätt.

  8. Välj slutligen ett namn för profilen i Etableringsprofilnamn och välj Generera.

    Choose a provisioning profile name

  9. När den nya etableringsprofilen skapas väljer du Ladda ned. Kom ihåg den plats där den sparas.

  10. Bläddra till platsen för etableringsprofilen och dubbelklicka sedan på den för att installera den på Xcode-utvecklingsdatorn.

Skapa en meddelandehubb

I det här avsnittet skapar du en meddelandehubb och konfigurerar autentisering med API:er med hjälp av antingen push-certifikatet .p12 eller tokenbaserad autentisering. Om du vill använda en meddelandehubb som du redan har skapat kan du gå vidare till steg 5.

  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 meddelandehubben med APN-information

Under Notification Services väljer du Apple (APNS) och följer sedan lämpliga steg baserat på den metod du valde tidigare i avsnittet Skapa ett certifikat för Notification Hubs .

Kommentar

Om du skapar din app med App Store eller ad hoc-distributionsprofilen använder du produktionsläget för programläge. Detta gör att enheten kan skicka push-meddelanden till användare som har köpt din app från butiken.

ALTERNATIV 1: Använda ett .p12-pushcertifikat

  1. Välj Certifikat.

  2. Välj filikonen.

  3. Välj den .p12-fil som du exporterade tidigare och välj sedan Öppna.

  4. Ange rätt lösenord om det behövs.

  5. Välj Sandbox-läge.

    Configure APNs certification in Azure portal

  6. Välj Spara.

ALTERNATIV 2: Använda tokenbaserad autentisering

  1. Välj Token.

  2. Ange följande värden som du hämtade tidigare:

    • Nyckel-ID
    • Paket-ID
    • Team-ID
    • Token
  3. Välj sandbox-miljö

  4. Välj Spara.

Nu har du konfigurerat meddelandehubben med APN:er. Du har också anslutningssträng för att registrera din app och skicka push-meddelanden.

Anslut appen till meddelandehubben

Skapa ett nytt projekt

  1. I Visual Studio skapar du ett nytt iOS-projekt och väljer mallen Single View App (App med enkel vy) och klickar på Next (Nästa)

    Visual Studio - Select Application Type

  2. Ange appnamnet och organisations-ID, och klicka sedan på Next (Nästa) och Create (Skapa)

  3. I vyn Solution (Lösning) dubbelklickar du på Info.plist och under Identity (Identitet) ser du till att paket-ID:t matchar det som används när du skapar etableringsprofilen. Under Signing (Signering) kontrollerar du att ditt Developer-konto är markerat under Team, att "Automatically manage signing" (Hantera signering automatiskt) är markerat samt att signeringscertifikatet och etableringsprofilen väljs automatiskt.

    Visual Studio- iOS App Config

  4. Dubbelklicka på Entitlements.plist vyn Lösning och se till att Aktivera push-meddelanden är markerat.

    Visual Studio- iOS Entitlements Config

  5. Lägg till Azure Messaging-paketet. I vyn Solution (Lösning) högerklickar du på projektet och väljer Add (Lägg till) >Add NuGet Packages (Lägg till NuGet-paket). Sök efter Xamarin.Azure.NotificationHubs.iOS och lägg till paketet i projektet.

  6. Lägg till en ny fil i klassen och ge den namnet Constants.cs Lägg till följande variabler och ersätt stränglitteralplatshållarna med hubname och DefaultListenSharedAccessSignature som noterats tidigare.

    // Azure app-specific connection string and hub path
    public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>";
    public const string NotificationHubName = "<Azure Notification Hub Name>";
    
  7. I AppDelegate.cs lägger du till följande using-instruktion:

    using WindowsAzure.Messaging.NotificationHubs;
    using UserNotifications
    
  8. Skapa en implementering av MSNotificationHubDelegate i AppDelegate.cs:

    public class AzureNotificationHubListener : MSNotificationHubDelegate
    {
        public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
        {
    
        }
    }
    
  9. I AppDelegate.cs uppdaterar du FinishedLaunching() till att matcha följande kod:

    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;
    }
    
  10. I AppDelegate.csimplementerar du DidReceivePushNotification -metoden för AzureNotificationHubListener klassen:

    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);
    }
    
  11. Kör appen på enheten.

Skicka test-push-meddelanden

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, till exempel Mobile Apps eller ASP.NET, med hjälp av ett kompatibelt bibliotek. Du kan också använda REST-API:et direkt för att skicka meddelanden om ett bibliotek inte är tillgängligt för din serverdel.

Nästa steg

I de här självstudierna har du skickat meddelanden till alla iOS-enheter som är registrerade hos serverdelen. Information om hur du skickar meddelanden till specifika iOS-enheter finns i följande självstudiekurs: