Tutorial: Senden von Pushbenachrichtigungen an bestimmte iOS-Geräte mit Azure Notification HubsTutorial: Push notifications to specific iOS devices using Azure Notification Hubs

ÜbersichtOverview

In diesem Tutorial wird gezeigt, wie Sie mit Azure Notification Hubs Benachrichtigungen zu aktuellen Nachrichten an eine iOS-Apps senden.This tutorial shows you how to use Azure Notification Hubs to broadcast breaking news notifications to an iOS app. Anschließend können Sie sich für Kategorien aktueller Nachrichten registrieren, die Sie interessieren, und nur Pushbenachrichtigungen für diese Kategorien empfangen.When complete, you are able to register for breaking news categories you are interested in, and receive only push notifications for those categories. Dieses Szenario ist ein häufiges Muster für viele Apps, bei denen Benachrichtigungen an Benutzergruppen gesendet werden müssen, die zuvor Interesse daran bekundet haben, zum Beispiel RSS-Feeds, Apps für Musikfans usw.This scenario is a common pattern for many apps where notifications have to be sent to groups of users that have previously declared interest in them, for example, RSS reader, apps for music fans, etc.

Übertragungsszenarien werden durch das Einfügen von einem oder mehreren Tags möglich, wenn eine Registrierung im Notification Hub erstellt wird.Broadcast scenarios are enabled by including one or more tags when creating a registration in the notification hub. Wenn Benachrichtigungen an ein Tag gesendet werden, erhalten Geräte, die für das Tag registriert wurden, diese Benachrichtigung.When notifications are sent to a tag, devices that have registered for the tag receive the notification. Da es sich bei Tags um Zeichenfolgen handelt, müssen diese nicht im Voraus bereitgestellt werden.Because tags are simply strings, they do not have to be provisioned in advance. Weitere Informationen zu Tags finden Sie unter Notification Hubs – Weiterleitung und Tagausdrücke.For more information about tags, see Notification Hubs Routing and Tag Expressions.

In diesem Tutorial führen Sie die folgenden Schritte aus:In this tutorial, you take the following steps:

  • Hinzufügen einer Kategorieauswahl zur AppAdd a category selection to the app
  • Senden von Benachrichtigungen mit TagsSend tagged notifications
  • Senden von Benachrichtigungen vom GerätSend notifications from the device
  • Ausführen der App und Erzeugen von BenachrichtigungenRun the app and generate notifications

VoraussetzungenPrerequisites

Dieses Thema baut auf der App auf, die Sie im folgenden Tutorial erstellt haben: Tutorial: Senden von Pushbenachrichtigungen an iOS-Apps mit Azure Notification Hubs.This topic builds on the app you created in Tutorial: Push notifications to iOS apps using Azure Notification Hubs. Bevor Sie dieses Tutorial beginnen, müssen Sie das folgende Tutorial abgeschlossen haben: Tutorial: Senden von Pushbenachrichtigungen an iOS-Apps mit Azure Notification Hubs.Before starting this tutorial, you must have already completed Tutorial: Push notifications to iOS apps using Azure Notification Hubs.

Hinzufügen der Kategorieauswahl zur AppAdd category selection to the app

Zunächst werden Sie Benutzeroberflächenelemente zum vorhandenen Storyboard hinzufügen, mit denen Benutzer Kategorien für die Registrierung auswählen können.The first step is to add the UI elements to your existing storyboard that enable the user to select categories to register. Die durch den Benutzer ausgewählten Kategorien werden auf dem Gerät gespeichert.The categories selected by a user are stored on the device. Wenn die App gestartet wird, wird eine Geräteregistrierung in Ihrem Notification Hub mit den ausgewählten Kategorien als Tags erstellt.When the app starts, a device registration is created in your notification hub with the selected categories as tags.

  1. Fügen Sie die folgenden Komponenten aus der Objektbibliothek zu MainStoryboard_iPhone.storyboard hinzu:In your MainStoryboard_iPhone.storyboard add the following components from the object library:

    • Eine Beschriftung mit dem Text "Breaking News",A label with "Breaking News" text,

    • Beschriftungen mit den Kategorien "World", "Politics", "Business", "Technology", "Science", "Sports",Labels with category texts "World", "Politics", "Business", "Technology", "Science", "Sports",

    • Sechs Switches, einen pro Kategorie, wobei für jeden Switch State standardmäßig auf Off festgelegt ist.Six switches, one per category, set each switch State to be Off by default.

    • Eine Schaltfläche mit der Beschriftung "Subscribe"One button labeled "Subscribe"

      Ihr Storyboard sollte nun folgendermaßen aussehen:Your storyboard should look as follows:

      Xcode Interface Builder

  2. Erstellen Sie im Assistant Editor Outlets für alle Switches und nennen Sie diese "WorldSwitch", "PoliticsSwitch", "BusinessSwitch", "TechnologySwitch", "ScienceSwitch", "SportsSwitch"In the assistant editor, create outlets for all the switches and call them "WorldSwitch", "PoliticsSwitch", "BusinessSwitch", "TechnologySwitch", "ScienceSwitch", "SportsSwitch"

  3. Erstellen Sie eine Aktion für Ihre Schaltfläche mit dem Namen subscribe. ViewController.h sollte den folgenden Code enthalten:Create an Action for your button called subscribe; your ViewController.h should contain the following code:

    @property (weak, nonatomic) IBOutlet UISwitch *WorldSwitch;
    @property (weak, nonatomic) IBOutlet UISwitch *PoliticsSwitch;
    @property (weak, nonatomic) IBOutlet UISwitch *BusinessSwitch;
    @property (weak, nonatomic) IBOutlet UISwitch *TechnologySwitch;
    @property (weak, nonatomic) IBOutlet UISwitch *ScienceSwitch;
    @property (weak, nonatomic) IBOutlet UISwitch *SportsSwitch;
    
    - (IBAction)subscribe:(id)sender;
    
  4. Erstellen Sie eine neue Cocoa Touch-Klasse namens Notifications.Create a new Cocoa Touch Class called Notifications. Fügen Sie den folgenden Code im Schnittstellenbereich der Datei Notifications.h ein:Copy the following code in the interface section of the file Notifications.h:

    @property NSData* deviceToken;
    
    - (id)initWithConnectionString:(NSString*)listenConnectionString HubName:(NSString*)hubName;
    
    - (void)storeCategoriesAndSubscribeWithCategories:(NSArray*)categories
                completion:(void (^)(NSError* error))completion;
    
    - (NSSet*)retrieveCategories;
    
    - (void)subscribeWithCategories:(NSSet*)categories completion:(void (^)(NSError *))completion;
    
  5. Fügen Sie die folgende Import-Anweisung zu Notifications.h hinzu:Add the following import directive to Notifications.m:

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    
  6. Fügen Sie den folgenden Code im Implementierungsbereich der Datei „Notifications.m“ ein.Copy the following code in the implementation section of the file Notifications.m.

    SBNotificationHub* hub;
    
    - (id)initWithConnectionString:(NSString*)listenConnectionString HubName:(NSString*)hubName{
    
        hub = [[SBNotificationHub alloc] initWithConnectionString:listenConnectionString
                                    notificationHubPath:hubName];
    
        return self;
    }
    
    - (void)storeCategoriesAndSubscribeWithCategories:(NSSet *)categories completion:(void (^)(NSError *))completion {
        NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
        [defaults setValue:[categories allObjects] forKey:@"BreakingNewsCategories"];
    
        [self subscribeWithCategories:categories completion:completion];
    }
    
    - (NSSet*)retrieveCategories {
        NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
    
        NSArray* categories = [defaults stringArrayForKey:@"BreakingNewsCategories"];
    
        if (!categories) return [[NSSet alloc] init];
        return [[NSSet alloc] initWithArray:categories];
    }
    
    - (void)subscribeWithCategories:(NSSet *)categories completion:(void (^)(NSError *))completion
    {
        //[hub registerNativeWithDeviceToken:self.deviceToken tags:categories completion: completion];
    
        NSString* templateBodyAPNS = @"{\"aps\":{\"alert\":\"$(messageParam)\"}}";
    
        [hub registerTemplateWithDeviceToken:self.deviceToken name:@"simpleAPNSTemplate" 
            jsonBodyTemplate:templateBodyAPNS expiryTemplate:@"0" tags:categories completion:completion];
    }
    

    Diese Klasse verwendet den lokalen Speicher, um die Nachrichtenkategorien zu speichern und abzurufen, die das Gerät empfangen wird.This class uses local storage to store and retrieve the categories of news that this device receives. Sie enthält außerdem eine Methode zum Registrieren dieser Kategorien mithilfe einer Vorlagenregistrierung .Also, it contains a method to register for these categories using a Template registration.

  7. Fügen Sie in der AppDelegate.h-Datei eine Importanweisung für Notifications.h und eine Eigenschaft für eine Instanz der Notifications-Klasse hinzu:In the AppDelegate.h file, add an import statement for Notifications.h and add a property for an instance of the Notifications class:

    #import "Notifications.h"
    
    @property (nonatomic) Notifications* notifications;
    
  8. Fügen Sie in der didFinishLaunchingWithOptions-Methode in AppDelegate.m den Code zum Initialisieren der Notifications-Instanz am Anfang der Methode hinzu.In the didFinishLaunchingWithOptions method in AppDelegate.m, add the code to initialize the notifications instance at the beginning of the method.
    In HUBNAME und HUBLISTENACCESS (definiert in hubinfo.h) sollten die Platzhalter <hub name> und <connection string with listen access> bereits durch den Namen Ihres Notification Hubs und die Verbindungszeichenfolge für die zuvor abgerufene DefaultListenSharedAccessSignature ersetzt sein.HUBNAME and HUBLISTENACCESS (defined in hubinfo.h) should already have the <hub name> and <connection string with listen access> placeholders replaced with your notification hub name and the connection string for DefaultListenSharedAccessSignature that you obtained earlier

    self.notifications = [[Notifications alloc] initWithConnectionString:HUBLISTENACCESS HubName:HUBNAME];
    

    Hinweis

    Da Anmeldenamen, die mit einer Client-App verteilt werden, nicht sehr sicher sind, sollten Sie nur den Schlüssel für den Abhörzugriff mit Ihrer Client-App verteilen.Because credentials that are distributed with a client app are not generally secure, you should only distribute the key for listen access with your client app. Der Abhörzugriff ermöglicht der App, sich für Benachrichtigungen zu registrieren, aber es können keine vorhandenen Registrierungen geändert und keine Benachrichtigungen versendet werden.Listen access enables your app to register for notifications, but existing registrations cannot be modified and notifications cannot be sent. Der Vollzugriffsschlüssel wird in einem gesicherten Back-End-Dienst für das Versenden von Benachrichtigungen und das Ändern vorhandener Benachrichtigungen verwendet.The full access key is used in a secured backend service for sending notifications and changing existing registrations.

  9. Ersetzen Sie in der didRegisterForRemoteNotificationsWithDeviceToken-Methode in AppDelegate.m den Code in der Methode durch den folgenden Code, um das Gerätetoken an die notifications-Klasse zu übergeben.In the didRegisterForRemoteNotificationsWithDeviceToken method in AppDelegate.m, replace the code in the method with the following code to pass the device token to the notifications class. Die notifications-Klasse führt die Registrierung für Benachrichtigungen mit den Kategorien durch.The notifications class performs the registering for notifications with the categories. Wenn der Benutzer die Auswahl der Kategorien ändert, wird die subscribeWithCategories-Methode als Antwort auf die Schaltfläche subscribe aufgerufen, um sie zu aktualisieren.If the user changes category selections, call the subscribeWithCategories method in response to the subscribe button to update them.

    Hinweis

    Da sich der durch den Apple Push Notification Service (APNS) zugeteilte Geräte-Token jederzeit ändern kann, sollten Sie sich regelmäßig für Benachrichtigungen registrieren, um Benachrichtigungsfehler zu vermeiden.Because the device token assigned by the Apple Push Notification Service (APNS) can chance at any time, you should register for notifications frequently to avoid notification failures. Dieses Beispiel registriert sich jedes Mal für Benachrichtigungen, wenn die App gestartet wird.This example registers for notification every time that the app starts. Für häufig ausgeführte Anwendungen (öfters als einmal täglich) können Sie die Registrierung wahrscheinlich überspringen, wenn weniger als ein Tag seit der letzten Registrierung vergangen ist, um Bandbreite einzusparen.For apps that are run frequently, more than once a day, you can probably skip registration to preserve bandwidth if less than a day has passed since the previous registration.

    self.notifications.deviceToken = deviceToken;
    
    // Retrieves the categories from local storage and requests a registration for these categories
    // each time the app starts and performs a registration.
    
    NSSet* categories = [self.notifications retrieveCategories];
    [self.notifications subscribeWithCategories:categories completion:^(NSError* error) {
        if (error != nil) {
            NSLog(@"Error registering for notifications: %@", error);
        }
    }];
    

    Die Methode didRegisterForRemoteNotificationsWithDeviceToken sollte nun keinen anderen Code mehr enthalten.At this point, there should be no other code in the didRegisterForRemoteNotificationsWithDeviceToken method.

  10. Die folgenden Methoden sollten durch Abschließen des Tutorials Erste Schritte mit Notification Hubs bereits in AppDelegate.m vorhanden sein.The following methods should already be present in AppDelegate.m from completing the Get started with Notification Hubs tutorial. Wenn dies nicht der Fall ist, fügen Sie sie hinzu.If not, add them.

    - (void)MessageBox:(NSString *)title message:(NSString *)messageText
    {
    
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:messageText delegate:self
            cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
    }
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:
       (NSDictionary *)userInfo {
       NSLog(@"%@", userInfo);
       [self MessageBox:@"Notification" message:[[userInfo objectForKey:@"aps"] valueForKey:@"alert"]];
     }
    

    Diese Methode verarbeitet Benachrichtigungen, die während der Ausführung der App empfangen werden, durch Anzeige eines einfachen UIAlert.This method handles notifications received when the app is running by displaying a simple UIAlert.

  11. Fügen Sie in ViewController.m eine import-Anweisung für AppDelegate.h hinzu, und kopieren Sie den folgenden Code in die von XCode generierte subscribe-Methode.In ViewController.m, add an import statement for AppDelegate.h and copy the following code into the XCode-generated subscribe method. Dieser Code aktualisiert die Benachrichtigungsregistrierung so, dass die neuen Kategorietags verwendet werden, die der Benutzer auf der Benutzeroberfläche ausgewählt hat.This code updates the notification registration to use the new category tags the user has chosen in the user interface.

    #import "Notifications.h"
    
    NSMutableArray* categories = [[NSMutableArray alloc] init];
    
    if (self.WorldSwitch.isOn) [categories addObject:@"World"];
    if (self.PoliticsSwitch.isOn) [categories addObject:@"Politics"];
    if (self.BusinessSwitch.isOn) [categories addObject:@"Business"];
    if (self.TechnologySwitch.isOn) [categories addObject:@"Technology"];
    if (self.ScienceSwitch.isOn) [categories addObject:@"Science"];
    if (self.SportsSwitch.isOn) [categories addObject:@"Sports"];
    
    Notifications* notifications = [(AppDelegate*)[[UIApplication sharedApplication]delegate] notifications];
    
    [notifications storeCategoriesAndSubscribeWithCategories:categories completion: ^(NSError* error) {
        if (!error) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:"Notification" message:"Subscribed" delegate:self
            cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
        } else {
            NSLog(@"Error subscribing: %@", error);
        }
    }];
    

    Diese Methode erstellt ein NSMutableArray mit Kategorien und verwendet die Klasse Notifications, um die Liste im lokalen Speicher zu speichern und die entsprechenden Tags bei Ihrem Benachrichtigungs-Hub zu registrieren.This method creates an NSMutableArray of categories and uses the Notifications class to store the list in the local storage and registers the corresponding tags with your notification hub. Wenn Kategorien geändert werden, wird die Registrierung mit neuen Kategorien neu erstellt.When categories are changed, the registration is recreated with the new categories.

  12. Fügen Sie in ViewController.m den folgenden Code in der viewDidLoad-Methode hinzu, um die Benutzeroberfläche auf Grundlage der zuvor gespeicherten Kategorien festzulegen.In ViewController.m, add the following code in the viewDidLoad method to set the user interface based on the previously saved categories.

    // This updates the UI on startup based on the status of previously saved categories.
    
    Notifications* notifications = [(AppDelegate*)[[UIApplication sharedApplication]delegate] notifications];
    
    NSSet* categories = [notifications retrieveCategories];
    
    if ([categories containsObject:@"World"]) self.WorldSwitch.on = true;
    if ([categories containsObject:@"Politics"]) self.PoliticsSwitch.on = true;
    if ([categories containsObject:@"Business"]) self.BusinessSwitch.on = true;
    if ([categories containsObject:@"Technology"]) self.TechnologySwitch.on = true;
    if ([categories containsObject:@"Science"]) self.ScienceSwitch.on = true;
    if ([categories containsObject:@"Sports"]) self.SportsSwitch.on = true;
    

Die App kann jetzt verschiedene Kategorien im lokalen Speicher des Geräts speichern, die für die Registrierung beim Notification Hub verwendet werden, wenn die App gestartet wird.The app can now store a set of categories in the device local storage used to register with the notification hub whenever the app starts. Der Benutzer kann zur Laufzeit die Auswahl der Kategorien ändern und auf die subscribe-Methode klicken, um die Registrierung für das Gerät zu aktualisieren.The user can change the selection of categories at runtime and click the subscribe method to update the registration for the device. Als Nächstes aktualisieren Sie die App zum Senden von Benachrichtigungen zu aktuellen Nachrichten direkt in der App selbst.Next, you update the app to send the breaking news notifications directly in the app itself.

(Optional) Senden von Benachrichtigungen mit Tags(optional) Send tagged notifications

Wenn Sie keinen Zugriff auf Visual Studio haben, können Sie den nächsten Abschnitt überspringen und Benachrichtigungen direkt über die App senden.If you don't have access to Visual Studio, you can skip to the next section and send notifications from the app itself. Sie können auch die richtige Vorlagenbenachrichtigung aus dem Azure-Portal mithilfe der Registerkarte „Debuggen“ für den Notification Hub senden.You can also send the proper template notification from the Azure portal using the debug tab for your notification hub.

In diesem Abschnitt senden Sie Neuigkeiten als Vorlagenbenachrichtigungen mit Tags über eine .NET-Konsolen-App.In this section, you send breaking news as tagged template notifications from a .NET console app.

  1. Erstellen Sie in Visual Studio eine neue Visual C#-Konsolenanwendung: a.In Visual Studio, create a new Visual C# console application: a. Wählen Sie im Menü die Optionen Datei > Neu > Projekt aus.On the menu, select File > New > Project. b.b. Erweitern Sie Visual C# , und wählen Sie Windows-Desktop aus.Expand Visual C#, and select Windows Desktop. c.c. Wählen Sie in der Liste der Vorlagen Konsolen-App (.NET Framework) aus.Select Console App (.NET Framework) in the list of templates. d.d. Geben Sie einen Namen für die App ein.Enter a name for the app. e.e. Wählen Sie einen Ordner für die App aus.Select a folder for the app. f.f. Wählen Sie OK aus, um das Projekt zu erstellen.Select OK to create the project.

  2. Wählen Sie im Hauptmenü von Visual Studio die Optionen Extras > NuGet-Paket-Manager > Paket-Manager-Konsole aus, und geben Sie im Konsolenfenster die folgende Zeichenfolge ein:On the Visual Studio main menu, select Tools > NuGet Package Manager > Package Manager Console and then, in the console window, enter the following string:

    Install-Package Microsoft.Azure.NotificationHubs
    
  3. Drücken Sie die EINGABETASTE.Select Enter.
    Dadurch wird mithilfe des Microsoft.Azure.NotificationHubs-NuGet-Pakets ein Verweis auf das Azure Notification Hubs-SDK hinzugefügt.This action adds a reference to the Azure Notification Hubs SDK by using the Microsoft.Azure.Notification Hubs NuGet package.

  4. Öffnen Sie die Datei „Program.cs“, und fügen Sie die folgende using-Anweisung hinzu:Open the Program.cs file, and add the following using statement:

    using Microsoft.Azure.NotificationHubs;
    
  5. Fügen Sie in der Program -Klasse die folgende Methode hinzu, oder ersetzen Sie sie, falls sie bereits vorhanden ist:In the Program class, add the following method, or replace it if it already exists:

    private static async void SendTemplateNotificationAsync()
    {
        // Define the notification hub.
        NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("<connection string with full access>", "<hub name>");
    
        // Create an array of breaking news categories.
        var categories = new string[] { "World", "Politics", "Business", "Technology", "Science", "Sports"};
    
        // Send the notification as a template notification. All template registrations that contain
        // "messageParam" and the proper tags will receive the notifications.
        // This includes APNS, GCM, WNS, and MPNS template registrations.
    
        Dictionary<string, string> templateParams = new Dictionary<string, string>();
    
        foreach (var category in categories)
        {
            templateParams["messageParam"] = "Breaking " + category + " News!";
            await hub.SendTemplateNotificationAsync(templateParams, category);
        }
    }
    

    Dieser Code sendet eine Vorlagenbenachrichtigung für jedes der sechs Tags im Zeichenfolgenarray.This code sends a template notification for each of the six tags in the string array. Durch die Verwendung von Tags wird sichergestellt, dass Geräte nur Benachrichtigungen für die registrierten Kategorien erhalten.The use of tags ensures that devices receive notifications only for the registered categories.

  6. Ersetzen Sie im obigen Code die Platzhalter <hub name> und <connection string with full access> durch den Namen Ihres Notification Hubs und die Verbindungszeichenfolge für DefaultFullSharedAccessSignature aus dem Dashboard für Ihren Notification Hub.In the preceding code, replace the <hub name> and <connection string with full access> placeholders with your notification hub name and the connection string for DefaultFullSharedAccessSignature from the dashboard of your notification hub.

  7. Fügen Sie in der Main-Methode die folgenden Zeilen hinzu:In the Main method, add the following lines:

    SendTemplateNotificationAsync();
    Console.ReadLine();
    
  8. Erstellen Sie die Konsolenanwendung.Build the console app.

(Optional) Senden von Benachrichtigungen vom Gerät(optional) Send notifications from the device

Normalerweise würden die Benachrichtigungen von einem Back-End-Dienst gesendet werden, aber Sie können Benachrichtigungen zu aktuellen Nachrichten direkt über die App senden.Normally notifications would be sent by a backend service but, you can send breaking news notifications directly from the app. Aktualisieren Sie zu diesem Zweck die SendNotificationRESTAPI-Methode, die Sie im Tutorial Erste Schritte mit Notification Hubs definiert haben.To do so, you update the SendNotificationRESTAPI method that you defined in the Get started with Notification Hubs tutorial.

  1. Aktualisieren Sie in ViewController.m die SendNotificationRESTAPI-Methode wie folgt, sodass ein Parameter für das Kategorietag akzeptiert und die richtige Vorlagenbenachrichtigung gesendet wird.In ViewController.m, update the SendNotificationRESTAPI method as follows so that it accepts a parameter for the category tag and sends the proper template notification.

    - (void)SendNotificationRESTAPI:(NSString*)categoryTag
    {
        NSURLSession* session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration
                                    defaultSessionConfiguration] delegate:nil delegateQueue:nil];
    
        NSString *json;
    
        // Construct the messages REST endpoint
        NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/messages/%@", HubEndpoint,
                                            HUBNAME, API_VERSION]];
    
        // Generated the token to be used in the authorization header.
        NSString* authorizationToken = [self generateSasToken:[url absoluteString]];
    
        //Create the request to add the template notification message to the hub
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        [request setHTTPMethod:@"POST"];
    
        // Add the category as a tag
        [request setValue:categoryTag forHTTPHeaderField:@"ServiceBusNotification-Tags"];
    
        // Template notification
        json = [NSString stringWithFormat:@"{\"messageParam\":\"Breaking %@ News : %@\"}",
                categoryTag, self.notificationMessage.text];
    
        // Signify template notification format
        [request setValue:@"template" forHTTPHeaderField:@"ServiceBusNotification-Format"];
    
        // JSON Content-Type
        [request setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    
        //Authenticate the notification message POST request with the SaS token
        [request setValue:authorizationToken forHTTPHeaderField:@"Authorization"];
    
        //Add the notification message body
        [request setHTTPBody:[json dataUsingEncoding:NSUTF8StringEncoding]];
    
        // Send the REST request
        NSURLSessionDataTask* dataTask = [session dataTaskWithRequest:request
                    completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
            {
            NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*) response;
                if (error || httpResponse.statusCode != 200)
                {
                    NSLog(@"\nError status: %d\nError: %@", httpResponse.statusCode, error);
                }
                if (data != NULL)
                {
                    //xmlParser = [[NSXMLParser alloc] initWithData:data];
                    //[xmlParser setDelegate:self];
                    //[xmlParser parse];
                }
            }];
    
        [dataTask resume];
    }
    
  2. Aktualisieren Sie in ViewController.m die Aktion Send Notification, wie im folgenden Code gezeigt.In ViewController.m, update the Send Notification action as shown in the code that follows. Dadurch werden die Benachrichtigungen gesendet, indem jedes Tag einzeln verwendet wird, und sie werden an mehrere Plattformen gesendet.So that it sends the notifications using each tag individually and sends to multiple platforms.

    - (IBAction)SendNotificationMessage:(id)sender
    {
        self.sendResults.text = @"";
    
        NSArray* categories = [NSArray arrayWithObjects: @"World", @"Politics", @"Business",
                                @"Technology", @"Science", @"Sports", nil];
    
        // Lets send the message as breaking news for each category to WNS, FCM, and APNS
        // using a template.
        for(NSString* category in categories)
        {
            [self SendNotificationRESTAPI:category];
        }
    }
    
  3. Erstellen Sie das Projekt neu, und stellen Sie sicher, dass keine Buildfehler vorliegen.Rebuild your project and make sure you have no build errors.

Ausführen der Anwendung und Erzeugen von BenachrichtigungenRun the app and generate notifications

  1. Klicken Sie auf die Schaltfläche Ausführen, um das Projekt zu erstellen und die App zu starten.Press the Run button to build the project and start the app. Wählen Sie einige Optionen zum Abonnieren aktueller Nachrichten aus, und klicken Sie dann auf die Schaltfläche Subscribe .Select some breaking news options to subscribe to and then press the Subscribe button. Es sollte in einem Dialogfeld angegeben werden, dass die Benachrichtigungen abonniert wurden.You should see a dialog indicating the notifications have been subscribed to.

    Beispielbenachrichtigung unter iOS

    Wenn Sie Subscribeauswählen, konvertiert die App die ausgewählten Kategorien in Tags und fordert eine neue Geräteregistrierung für die ausgewählten Tags vom Notification Hub an.When you choose Subscribe, the app converts the selected categories into tags and requests a new device registration for the selected tags from the notification hub.

  2. Geben Sie eine Nachricht ein, die als aktuelle Nachricht gesendet werden soll, und klicken Sie dann auf die Schaltfläche Benachrichtigung senden .Enter a message to be sent as breaking news then press the Send Notification button. Führen Sie alternativ die .NET-Konsolen-App aus, um Benachrichtigungen zu generieren.Alternatively, run the .NET console app to generate notifications.

    Benachrichtigungseinstellungen in iOS ändern

  3. Jedes Gerät, das aktuelle Nachrichten abonniert hat, erhält die Benachrichtigungen, die Sie gerade gesendet haben.Each device subscribed to breaking news receives the breaking news notifications you just sent.

Nächste SchritteNext steps

In diesem Tutorial haben Sie Broadcastbenachrichtigungen an bestimmte iOS-Geräte gesendet, die für die entsprechenden Kategorien registriert wurden.In this tutorial, you sent broadcast notifications to specific iOS devices that have registered for the categories. Um zu erfahren, wie Sie lokalisierte Pushbenachrichtigungen senden, fahren Sie mit dem folgenden Tutorial fort:To learn how to push localized notifications, advance to the following tutorial: