Share via


Självstudie: Inledande konfiguration för att ta emot push-meddelanden från Azure Notification Hubs

Den här självstudien visar hur du använder Azure Notification Hubs för att skicka push-meddelanden till ett iOS-program med hjälp av Azure Notification Hubs SDK för Apple.

Den här självstudien omfattar följande steg:

  • Skapa en exempelapp för iOS.
  • Anslut din iOS-app till Azure Notification Hubs.
  • Skicka push-meddelanden för test.
  • Kontrollera att appen tar emot meddelanden.

Du kan ladda ned den fullständiga koden för den här självstudien från GitHub.

Förutsättningar

För att slutföra den här självstudien behöver du följande krav:

  • En Mac som kör Xcode, tillsammans med ett giltigt utvecklarcertifikat installerat i nyckelringen.
  • En i Telefon eller iPad som kör iOS version 10 eller senare.
  • Din fysiska enhet som är registrerad i Apple-portalen och som är associerad med ditt certifikat.

Innan du fortsätter måste du gå igenom den tidigare självstudien om att komma igång med Azure Notification Hubs för iOS-appar för att konfigurera push-autentiseringsuppgifter i meddelandehubben. Även om du inte har någon tidigare erfarenhet av iOS-utveckling bör du kunna följa dessa steg.

Kommentar

På grund av konfigurationskraven för push-meddelanden måste du distribuera och testa push-meddelanden på en fysisk iOS-enhet (i Telefon eller iPad) i stället för iOS-emulatorn.

Anslut iOS-appen till Notification Hubs

  1. I Xcode skapar du ett nytt Xcode-projekt och väljer iOS-fliken och appmallen .

    Diagram that shows Xcode setup for new app

  2. När du anger alternativ för ditt nya projekt, ska du använda samma produktnamn och organisations-ID som du använde när du gjorde inställningarna för ID:t för programpaket på Apple Developer-portalen. Paketet som identifieras i det nya projektfönstret bör fyllas i för att matcha paketet som identifieras i Apple Developer-portalen. Detta är skiftlägeskänsligt.

  3. Under Projektnavigering väljer du projektnamnet under Mål och väljer sedan fliken Signering och funktioner. Kontrollera att du väljer lämpligt team för ditt Apple Developer-konto. XCode bör automatiskt hämta den etableringsprofil du har skapat tidigare baserat på paket-ID.

    Om du inte ser den nya etableringsprofil som du skapade i Xcode, kan du försöka uppdatera profilerna för din signeringsidentitet. Klicka på Xcode på menyraden, sedan på Inställningar och på fliken Konto. Därefter klickar du på knappen Visa detaljer och sedan på din signeringsidentitet. Slutligen klickar du på uppdateringsknappen i det nedre högra hörnet.

    View details

  4. På fliken Signering och funktioner väljer du + Kapacitet. Dubbelklicka på Push-meddelanden för att aktivera det.

    Capability

  5. Lägg till Azure Notification Hubs SDK-modulerna.

    Du kan integrera Azure Notification Hubs SDK i din app med hjälp av Cocoapods eller genom att manuellt lägga till binärfilerna i projektet.

    • Integrering via Cocoapods: Lägg till följande beroenden i din podfil för att inkludera Azure Notification Hubs SDK i din app:

      pod 'AzureNotificationHubs-iOS'
      
      • Kör poddinstallationen för att installera den nyligen definierade podden och öppna .xcworkspace.

        Om du ser ett fel, till exempel Det går inte att hitta en specifikation för AzureNotificationHubs-iOS när du kör poddinstallationen, kör pod repo update du för att hämta de senaste poddarna från Cocoapods-lagringsplatsen och kör sedan poddinstallationen.

    • Integrering via Carthage: Lägg till följande beroenden i din Cartfile för att inkludera Azure Notification Hubs SDK i din app:

      github "Azure/azure-notificationhubs-ios"
      
      • Uppdatera sedan byggberoenden:
      $ carthage update
      

      Mer information om hur du använder Carthage finns i GitHub-lagringsplatsen för Carthage.

    • Integrering genom att kopiera binärfilerna till projektet:

      Du kan integrera genom att kopiera binärfilerna till projektet på följande sätt:

      • Ladda ned Azure Notification Hubs SDK-ramverket som tillhandahålls som en zip-fil och packa upp det.

      • Högerklicka på ditt projekt i Xcode och klicka sedan på alternativet Lägg till filer i för att lägga till mappen WindowsAzureMessaging.framework till ditt Xcode-projekt. Välj Alternativ och se till att Kopiera objekt vid behov är markerat och klicka sedan på Lägg till.

        Add framework

  6. Lägg till eller redigera en fil med namnet Dev Inställningar.plist som innehåller två egenskaper, CONNECTION_STRING för anslutningssträng till Azure Notification Hub och HUB_NAME för Namnet på Azure Notification Hub.

  7. Lägg till informationen för att ansluta till Azure Notification Hubs i lämpligt <string></string> avsnitt. Ersätt platshållarna för strängliteraler --HUB-NAME-- och --CONNECTION-STRING-- med hubbnamnet respektive DefaultListenSharedAccessSignature som du tidigare hämtade från portalen:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>HUB_NAME</key>
      <string>--HUB-NAME--</string>
      <key>CONNECTION_STRING</key>
      <string>--CONNECTION-STRING--</string>
    </dict>
    </plist>
    
  8. I samma AppDelegate.m-fil ersätter du all kod efter didFinishLaunchingWithOptions med följande kod:

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    #import <UserNotifications/UserNotifications.h>
    
    // Extend the AppDelegate to listen for messages using MSNotificationHubDelegate and User Notification Center
    @interface AppDelegate () <MSNotificationHubDelegate>
    
    @end
    
    @implementation AppDelegate
    
    @synthesize notificationPresentationCompletionHandler;
    @synthesize notificationResponseCompletionHandler;
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        NSString *path = [[NSBundle mainBundle] pathForResource:@"DevSettings" ofType:@"plist"];
        NSDictionary *configValues = [NSDictionary dictionaryWithContentsOfFile:path];
    
        NSString *connectionString = [configValues objectForKey:@"CONNECTION_STRING"];
        NSString *hubName = [configValues objectForKey:@"HUB_NAME"];
    
        if([connectionString length] != 0 && [hubName length] != 0) {
            [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
            [MSNotificationHub setDelegate:self];
            [MSNotificationHub initWithConnectionString:connectionString withHubName:hubName];
    
            return YES;
        }
    
        NSLog(@"Please setup CONNECTION_STRING and HUB_NAME in DevSettings.plist and restart application");
    
        exit(-1);
    }
    
    - (void)notificationHub:(MSNotificationHub *)notificationHub didReceivePushNotification:(MSNotificationHubMessage *)message {
        // Send message using NSNotificationCenter with the message
        NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:@"message"];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageReceived" object:nil userInfo:userInfo];
    }
    
    @end
    

    Den här koden ansluter till meddelandehubben med hjälp av den anslutningsinformation som du angav i Dev Inställningar.plist. Den ger sedan enhetstoken till meddelandehubben så att hubben kan skicka meddelanden.

Skapa NotificationDetailViewController-huvudfil

  1. På samma sätt som i föregående instruktioner lägger du till en annan rubrikfil med namnet SetupViewController.h. Ersätt innehållet i den nya huvudfilen med följande kod:

    #import <UIKit/UIKit.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface SetupViewController : UIViewController
    
    @end
    
    NS_ASSUME_NONNULL_END
    
  2. Lägg till implementeringsfilen SetupViewController.m. Ersätt innehållet i filen med följande kod, som implementerar UIViewController-metoderna:

    #import "SetupViewController.h"
    
     static NSString *const kNHMessageReceived = @"MessageReceived";
    
     @interface SetupViewController ()
    
     @end
    
     @implementation SetupViewController
    
     - (void)viewDidLoad {
         [super viewDidLoad];
    
         // Listen for messages using NSNotificationCenter
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceivePushNotification:) name:kNHMessageReceived object:nil];
     }
    
     - (void)dealloc {
         // Clean up subscription to NSNotificationCenter
         [[NSNotificationCenter defaultCenter] removeObserver:self name:kNHMessageReceived object:nil];
     }
    
     - (void)didReceivePushNotification:(NSNotification *)notification {
         MSNotificationHubMessage *message = [notification.userInfo objectForKey:@"message"];
    
         // Create UI Alert controller with message title and body
         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message.title
                              message:message.body
                       preferredStyle:UIAlertControllerStyleAlert];
         [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]];
         [self presentViewController:alertController animated:YES completion:nil];
    
         // Dismiss after 2 seconds
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             [alertController dismissViewControllerAnimated:YES completion: nil];
         });
    
     }
    
     @end
    
  3. Skapa och kör appen på din enhet för att kontrollera att det inte finns några fel.

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.

Test send

Push-meddelanden skickas vanligtvis via en serverdelstjänst, till exempel Mobile Apps eller ASP.NET, med hjälp av ett kompatibelt bibliotek. Om ett bibliotek inte är tillgängligt för serverdelen kan du också använda REST-API:et direkt för att skicka meddelanden.

Här är en lista över några andra självstudier som du kanske vill granska för att skicka meddelanden:

Verifiera att din app tar emot push-meddelanden

Om du vill testa push-meddelanden på iOS måste du distribuera appen till en fysisk iOS-enhet. Du kan inte skicka Apple-push-meddelanden med hjälp av iOS-simulatorn.

  1. Kör appen och verifiera att registreringen kan genomföras. Tryck sedan på OK.

    Register

  2. Skicka sedan ett push-testmeddelande från Azure-portalen enligt beskrivningen i föregående avsnitt.

  3. Push-meddelandet skickas till alla enheter som är registrerade för att ta emot meddelanden från den angivna meddelandehubben.

    Send test

Nästa steg

I det här enkla exemplet sänder du push-meddelanden till alla dina registrerade iOS-enheter. Om du vill lära dig hur du skickar push-meddelanden till specifika iOS-enheter går du vidare till följande självstudie:

Självstudie: Skicka push-meddelanden till specifika enheter

Mer information finns i följande artiklar: