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
I Xcode skapar du ett nytt Xcode-projekt och väljer iOS-fliken och appmallen .
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.
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.
På fliken Signering och funktioner väljer du + Kapacitet. Dubbelklicka på Push-meddelanden för att aktivera det.
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.
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 ochHUB_NAME
för Namnet på Azure Notification Hub.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>
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
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
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
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.
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:
- Azure Mobile Apps: Ett exempel på hur du skickar meddelanden från en mobile apps-serverdel som är integrerad med Notification Hubs finns i Lägga till push-meddelanden i din iOS-app.
- ASP.NET: Använd Notification Hubs för att skicka push-meddelanden till användare.
- Azure Notification Hubs Java SDK: Se Använda Notification Hubs från Java för att skicka meddelanden från Java. Det här har testats i Eclipse för Android-utveckling.
- PHP: Använda Notification Hubs från PHP.
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.
Kör appen och verifiera att registreringen kan genomföras. Tryck sedan på OK.
Skicka sedan ett push-testmeddelande från Azure-portalen enligt beskrivningen i föregående avsnitt.
Push-meddelandet skickas till alla enheter som är registrerade för att ta emot meddelanden från den angivna meddelandehubben.
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:
- Översikt över Azure Notification Hubs
- Rest-API:er för Notification Hubs
- Notification Hubs SDK för backend-åtgärder
- Notification Hubs SDK på GitHub
- Registrera dig med programmets serverdel
- Registreringshantering
- Arbeta med taggar
- Arbeta med anpassade mallar
- Service Bus-åtkomstkontroll med signaturer för delad åtkomst
- Generera SAS-token programmatiskt
- Apple-säkerhet: vanlig kryptografi
- UNIX Epoch-tid
- HMAC