Share via


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

  1. Erstellen Sie in Xcode ein neues Xcode-Projekt, und wählen Sie die Registerkarte iOS und die Vorlage App aus.

    Diagram that shows Xcode setup for new app

  2. 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.

  3. 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“.

    View details

  4. Wählen Sie auf der Registerkarte Signing & Capabilities (Signieren und Funktionen) die Option + Funktion aus. Doppelklicken Sie zum Aktivieren auf Pushbenachrichtigungen.

    Capability

  5. 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.

        Add framework

  6. 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 und HUB_NAME für den Azure Notification Hub-Namen.

  7. 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>
    
  8. 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“

  1. 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
    
  2. 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
    
  3. 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.

Test send

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:

Ü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.

  1. Führen Sie die App aus, und überprüfen Sie, ob die Registrierung erfolgreich ist. Drücken Sie dann OK.

    Register

  2. Senden Sie nun zu Testzwecken eine Pushbenachrichtigung über dasAzure-Portal, wie im vorherigen Abschnitt beschrieben.

  3. Die Pushbenachrichtigung wird an alle Geräte gesendet, die dafür registriert sind, die Benachrichtigungen vom angegebenen Notification Hub zu erhalten.

    Send test

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: