Tutorial: Erstkonfiguration zum Empfangen von Pushbenachrichtigungen von Azure Notification Hubs
In diesem Tutorial erfahren Sie, wie Sie mithilfe von Azure Notification Hubs und des Azure Notification Hubs SDK für Apple Pushbenachrichtigungen an eine iOS-Anwendung senden.
Dieses Tutorial enthält die folgenden Schritte:
- Erstellen einer iOS-Beispiel-App
- Verbinden der iOS-App mit Azure Notification Hubs
- Senden von Pushbenachrichtigungen zu Testzwecken
- Überprüfen, ob die App Benachrichtigungen empfängt
Den vollständigen Code für dieses Tutorial können Sie von GitHub herunterladen.
Voraussetzungen
Für dieses Tutorial benötigen Sie Folgendes:
- Einen Mac mit Xcode zusammen mit einem gültigen in Ihrer Keychain installierten Entwicklerzertifikat.
- Ein iPhone oder iPad, auf dem iOS Version 10 oder höher ausgeführt wird.
- Registrierung Ihres physischen Geräts im Apple-Portal und Zuordnung zu Ihrem Zertifikat.
Bevor Sie fortfahren, vergewissern Sie sich, dass Sie das vorherige Tutorial zu den ersten Schritten mit Azure Notification Hubs für iOS-Apps durchlaufen und Pushanmeldeinformationen in Ihrem Notification Hub eingerichtet und konfiguriert haben. Selbst wenn Sie bisher keine Erfahrung mit iOS-Entwicklung haben, sollten Sie diesen Anweisungen folgen können.
Hinweis
Pushbenachrichtigungen müssen aufgrund von Konfigurationsanforderungen auf einem physischen iOS-Gerät (iPhone oder iPad) anstatt im iOS-Emulator bereitgestellt und getestet werden.
Verbinden der iOS-App mit Notification Hubs
Erstellen Sie in Xcode ein neues Xcode-Projekt, und wählen Sie die Registerkarte iOS und die Vorlage App aus.
Achten Sie beim Festlegen der Optionen für das neue Projekt darauf, dass Sie den gleichen Produktnamen und die gleiche Organisations-ID verwenden wie beim Festlegen der Paket-ID im Apple-Entwicklerportal. Das im Fenster für neue Projekte identifizierte Paket sollte mit Daten aufgefüllt werden, um dem im Apple-Entwicklerportal identifizierten Paket zu entsprechen. Hierbei muss die Groß-/Kleinschreibung beachtet werden.
Wählen Sie unter Project Navigator Ihren Projektnamen unter "Ziele" und dann die Registerkarte "Signieren und Funktionen " aus. Stellen Sie sicher, dass Sie das entsprechende Team für Ihr Apple-Entwicklerkonto auswählen. Xcode sollte auf der Grundlage Ihrer Paket-ID automatisch das Bereitstellungsprofil abrufen, das Sie zuvor erstellt haben.
Wenn das neue in Xcode erstellte Bereitstellungsprofil nicht angezeigt wird, versuchen Sie, die Profile für Ihre Signaturidentität zu aktualisieren. Klicken Sie in der Menüleiste auf Xcode, dann auf Voreinstellungen, auf die Registerkarte Konto, auf die Schaltfläche Details anzeigen, auf die Signaturidentität und anschließend rechts unten auf die Schaltfläche „Aktualisieren“.
Wählen Sie auf der Registerkarte Signing & Capabilities (Signieren und Funktionen) die Option + Funktion aus. Doppelklicken Sie zum Aktivieren auf Pushbenachrichtigungen.
Fügen Sie die Module für das Azure Notification Hubs SDK hinzu.
Sie können das Azure Notification Hubs SDK in Ihre App integrieren. Verwenden Sie dazu CocoaPods, oder fügen Sie Ihrem Projekt die Binärdateien manuell hinzu.
Integration über CocoaPods: Fügen Sie Ihrer Podfile-Datei die folgenden Abhängigkeiten hinzu, um das Azure Notification Hubs SDK in Ihre App zu integrieren:
pod 'AzureNotificationHubs-iOS'
Führen Sie „pod install“ aus, um Ihren neu definierten Pod zu installieren, und öffnen Sie „.xcworkspace“.
Wenn beim Ausführen von „pod install“ ein Fehler wie Es konnte keine Spezifikation für AzureNotificationHubs-iOS gefunden werden angezeigt wird, führen Sie
pod repo update
aus, um die neuesten Pods aus dem CocoaPods-Repository abzurufen, und führen Sie dann „pod install“ aus.
Integration über Carthage: Fügen Sie Ihrer Cartfile-Datei die folgenden Abhängigkeiten hinzu, um das Azure Notification Hubs SDK in Ihre App zu integrieren:
github "Azure/azure-notificationhubs-ios"
- Aktualisieren und erstellen Sie als Nächstes die Abhängigkeiten:
$ carthage update
Weitere Informationen zur Verwendung von Carthage finden Sie im GitHub-Repository für Carthage.
Integration durch Kopieren der Binärdateien in Ihr Projekt:
Sie können die Integration durch Kopieren der Binärdateien in Ihr Projekt vornehmen. Gehen Sie dazu folgendermaßen vor:
Laden Sie das als ZIP-Datei bereitgestellte Framework für das Azure Notification Hubs SDK herunter, und entzippen Sie es.
Klicken Sie in Xcode mit der rechten Maustaste auf Ihr Projekt, und klicken Sie dann auf die Option Add Files to zum Hinzufügen des Ordners WindowsAzureMessaging.framework zum Xcode-Projekt. Klicken Sie auf Optionen, vergewissern Sie sich, dass die Option Copy items if needed (Elemente kopieren, wenn nötig) aktiviert ist, und klicken Sie dann auf Hinzufügen.
Fügen Sie eine Datei mit dem Namen DevSettings.plist hinzu, oder bearbeiten Sie sie. Diese Datei enthält zwei Eigenschaften:
CONNECTION_STRING
für die Verbindungszeichenfolge für Azure Notification Hub undHUB_NAME
für den Azure Notification Hub-Namen.Fügen Sie die Informationen zum Herstellen einer Verbindung mit Azure Notification Hubs im entsprechenden Abschnitt
<string></string>
hinzu. Ersetzen Sie die Platzhalter für die Zeichenfolgenliterale--HUB-NAME--
und--CONNECTION-STRING--
durch den Hubnamen bzw. durch DefaultListenSharedAccessSignature, die Sie zuvor aus dem Portal abgerufen haben:<?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>
Ersetzen Sie in derselben Datei AppDelegate.m den gesamten Code nach
didFinishLaunchingWithOptions
durch den folgenden Code:#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
Mit diesem Code wird eine Verbindung mit dem Benachrichtigungs-Hub unter Verwendung der in DevSettings.plist angegebenen Verbindungsinformationen hergestellt. Dieser Code übergibt dann das Gerätetoken an den Notification Hub, sodass dieser Benachrichtigungen senden kann.
Erstellen der Headerdatei „NotificationDetailViewController“
Fügen Sie wie in den vorherigen Anweisungen eine weitere Headerdatei mit dem Namen SetupViewController.h hinzu. Ersetzen Sie den Inhalt der neuen Headerdatei durch den folgenden Code:
#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface SetupViewController : UIViewController @end NS_ASSUME_NONNULL_END
Fügen Sie die Implementierungsdatei SetupViewController.m hinzu. Ersetzen Sie den Inhalt der Datei durch den folgenden Code. Dadurch werden die UIViewController-Methoden implementiert:
#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
Erstellen Sie die App auf Ihrem Gerät, und führen Sie sie dort aus, um Fehler auszuschließen.
Senden von Pushbenachrichtigungen zu Testzwecken
Mit der Option Testsendevorgang im Azure portal können Sie den Empfang von Benachrichtigungen in Ihrer App testen. Diese Option sendet zu Testzwecken eine Pushbenachrichtigung an Ihr Gerät.
Pushbenachrichtigungen werden normalerweise mithilfe einer kompatiblen Bibliothek über einen Back-End-Dienst wie Mobile Apps oder ASP.NET gesendet. Falls für Ihr Back-End keine Bibliothek verfügbar ist, können Sie Benachrichtigungen auch direkt über die REST-API senden.
Es folgen einige andere Tutorials, die Informationen zum Senden von Benachrichtigungen enthalten:
- Azure Mobile Apps: Ein Beispiel für das Senden von Benachrichtigungen von einem mit Notification Hubs integrierten Mobile Apps-Back-End finden Sie unter Hinzufügen von Pushbenachrichtigungen zu Ihrer iOS-App.
- ASP.NET: Verwenden von Notification Hubs zum Senden von Pushbenachrichtigungen an Benutzer.
- Azure Notification Hubs Java-SDK: Informationen zum Senden von Benachrichtigungen über Java finden Sie unter Verwenden von Notification Hubs von Java aus . Dies wurde für die Android-Entwicklung in Eclipse getestet.
- PHP: Verwenden von Notification Hubs von PHP aus.
Überprüfen, ob die App Pushbenachrichtigungen empfängt
Zum Testen von Pushbenachrichtigungen unter iOS müssen Sie die App auf einem physischen iOS-Gerät bereitstellen. Sie können keine Apple-Pushbenachrichtigungen mit dem iOS-Simulator senden.
Führen Sie die App aus, und überprüfen Sie, ob die Registrierung erfolgreich ist. Drücken Sie dann OK.
Senden Sie nun zu Testzwecken eine Pushbenachrichtigung über dasAzure-Portal, wie im vorherigen Abschnitt beschrieben.
Die Pushbenachrichtigung wird an alle Geräte gesendet, die dafür registriert sind, die Benachrichtigungen vom angegebenen Notification Hub zu erhalten.
Nächste Schritte
In diesem einfachen Beispiel haben Sie Pushbenachrichtigungen an alle Ihre registrierten iOS-Geräte übertragen. Um zu erfahren, wie Sie Pushbenachrichtigungen an bestimmte iOS-Geräte senden, fahren Sie mit dem folgenden Tutorial fort:
Tutorial: Senden von Pushbenachrichtigungen an bestimmte Geräte
Weitere Informationen finden Sie in den folgenden Artikeln:
- Übersicht über Azure Notification Hubs
- REST-APIs für Notification Hubs
- Notification Hubs SDK für Back-End-Vorgänge
- Notification Hubs-SDK auf GitHub
- Registrieren des aktuellen Benutzers für Pushbenachrichtigungen mit ASP.NET
- Registrierungsverwaltung
- Arbeiten mit Tags
- Arbeiten mit benutzerdefinierten Vorlagen
- Service Bus-Zugriffssteuerung mit Shared Access Signatures
- Programmgesteuertes Generieren von SAS-Token
- Apple-Sicherheit: allgemeine Kryptografie
- UNIX-ZEIT (Epoch)
- HMAC