Tutorial: Senden von Pushbenachrichtigungen an iOS-Apps mit Azure Notification HubsTutorial: Send push notifications to iOS apps using Azure Notification Hubs

In diesem Tutorial verwenden Sie Azure Notification Hubs, um Pushbenachrichtigungen an eine iOS-Anwendung zu senden.In this tutorial, you use Azure Notification Hubs to send push notifications to an iOS application. Sie erstellen eine leere iOS-App, die Pushbenachrichtigungen mithilfe des Apple-Pushbenachrichtigungsdiensts (Apple Push Notification Service, APNs) empfängt.You create a blank iOS app that receives push notifications by using the Apple Push Notification service (APNs).

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

  • Generieren der Datei für die Anforderung der ZertifikatsignierungGenerate the certificate signing request file
  • Anfordern von Pushbenachrichtigungen für Ihre AppRequest your app for push notifications
  • Erstellen eines Bereitstellungsprofils für die AppCreate a provisioning profile for the app
  • Konfigurieren Ihres Notification Hubs für iOS-PushbenachrichtigungenConfigure your notification hub for iOS push notifications
  • Verbinden der iOS-App mit Notification HubsConnect your iOS app to notification hubs
  • Senden von Test-PushbenachrichtigungenSend test push notifications
  • Überprüfen, ob die App Benachrichtigungen empfängtVerify that your app receives notifications

Den vollständigen Code für dieses Tutorial finden Sie auf GitHub.The complete code for this tutorial can be found on GitHub.

VoraussetzungenPrerequisites

Zum Durchführen dieses Tutorials benötigen Sie Folgendes:To complete this tutorial, you need the following prerequisites:

Das Abschließen dieses Lernprogramms ist eine Voraussetzung für alle anderen Notification Hubs-Lernprogramme für iOS-Apps.Completing this tutorial is a prerequisite for all other Notification Hubs tutorials for iOS apps.

Erstellen der ZertifikatsignieranforderungsdateiGenerate the certificate-signing request file

Der Apple Push Notification Service (APNs) verwendet Zertifikate zur Authentifizierung Ihrer Pushbenachrichtigungen.The Apple Push Notification Service (APNs) uses certificates to authenticate your push notifications. Befolgen Sie diese Anweisungen, um das erforderliche Pushzertifikat zum Senden und Empfangen von Benachrichtigungen zu erstellen.Follow these instructions to create the necessary push certificate to send and receive notifications. Weitere Informationen zu diesen Konzepten finden Sie in der offiziellen Dokumentation zum Apple Push Notification Service.For more information on these concepts, see the official Apple Push Notification Service documentation.

Erstellen Sie die Zertifikatsignieranforderungsdatei (CSR-Datei), die von Apple zur Generierung eines signierten Pushzertifikats verwendet wird.Generate the Certificate Signing Request (CSR) file, which Apple uses to generate a signed push certificate.

  1. Führen Sie auf Ihrem Mac das Tool "Schlüsselbundverwaltung" aus.On your Mac, run the Keychain Access tool. Es kann im Ordner Dienstprogramme oder im Ordner Andere auf dem Launchpad geöffnet werden.It can be opened from the Utilities folder or the Other folder on the Launchpad.

  2. Wählen Sie die Option Schlüsselbundverwaltung aus, erweitern Sie Zertifikatsassistent, und wählen Sie dann Zertifikat einer Zertifizierungsinstanz anfordern aus.Select Keychain Access, expand Certificate Assistant, and then select Request a Certificate from a Certificate Authority.

    Anfordern eines neuen Zertifikats mithilfe der Schlüsselbundverwaltung

  3. Wählen Sie Ihre E-Mail-Adresse des Benutzers aus, und geben Sie den Wert für Allgemeiner Name ein. Vergewissern Sie sich, dass Saved to disk (Auf Datenträger gespeichert) aktiviert ist, und wählen Sie dann Weiter aus.Select your User Email Address, enter your Common Name value, make sure that you specify Saved to disk, and then select Continue. Lassen Sie das Feld CA Email Address (E-Mail der Zertifizierungsstelle) leer, da dieser Wert nicht erforderlich ist.Leave CA Email Address blank as it isn't required.

    Erforderliche Zertifikatinformationen

  4. Geben Sie im Feld Speichern unter einen Namen für die CSR-Datei ein, und wählen Sie unter Where (Ort) den Speicherort und anschließend Speichern aus.Enter a name for the CSR file in Save As, select the location in Where, and then select Save.

    Auswählen eines Dateinamens für das Zertifikat

    Dadurch wird die CSR-Datei am ausgewählten Speicherort gespeichert.This action saves the CSR file in the selected location. Der Standardspeicherort lautet Desktop.The default location is Desktop. Merken Sie sich den für diese Datei festgelegten Speicherort.Remember the location chosen for the file.

Registrieren Sie als Nächstes Ihre App bei Apple, aktivieren Sie Pushbenachrichtigungen, und laden Sie die exportierte CSR-Datei hoch, um ein Pushzertifikat zu erstellen.Next, register your app with Apple, enable push notifications, and upload the exported CSR to create a push certificate.

Registrieren der App für PushbenachrichtigungenRegister your app for push notifications

Zum Senden von Pushbenachrichtigungen an eine iOS-App registrieren Sie Ihre Anwendung bei Apple, und registrieren Sie sie auch für Pushbenachrichtigungen.To send push notifications to an iOS app, register your application with Apple, and also register for push notifications.

  1. Falls Sie Ihre App noch nicht registriert haben, navigieren Sie im Apple Developer Center zum iOS-Bereitstellungsportal.If you haven't already registered your app, browse to the iOS Provisioning Portal at the Apple Developer Center. Melden Sie sich mit Ihrer Apple-ID beim Portal an, und wählen Sie Bezeichner aus.Sign in to the portal with your Apple ID, and select Identifiers. Wählen Sie dann + aus, um eine neue App zu registrieren.Then select + to register a new app.

    iOS-Bereitstellungsportal: Seite mit App-IDs

  2. Aktivieren Sie auf dem Bildschirm zum Registrieren eines neuen Bezeichners das Optionsfeld App-IDs.On the Register a New Identifier screen, select the App IDs radio button. Klicken Sie anschließend auf Weiter.Then select Continue.

    Seite zum Registrieren einer neuen ID im iOS-Bereitstellungsportal

  3. Aktualisieren Sie die folgenden drei Werte für Ihre neue App, und wählen Sie dann Weiter aus:Update the following three values for your new app, and then select Continue:

    • Beschreibung: Geben Sie einen aussagekräftigen Namen für Ihre App ein.Description: Type a descriptive name for your app.

    • Paket-ID: Geben Sie eine Paket-ID im Format Organisationsbezeichner.Produktname ein, wie im Leitfaden zur App-Verteilung erwähnt.Bundle ID: Enter a Bundle ID of the form Organization Identifier.Product Name as mentioned in the App Distribution Guide. Die unter Organization Identifier (Organisationskennung) und Product Name (Produktname) eingegebenen Werte müssen der Organisationskennung und dem Produktnamen entsprechen, die Sie beim Erstellen des Xcode-Projekts verwenden.The Organization Identifier and Product Name values must match the organization identifier and product name you use when you create your Xcode project. Im folgenden Screenshot wird der Wert NotificationHubs als Organisationskennung und GetStarted als Produktname verwendet.In the following screenshot, the NotificationHubs value is used as an organization identifier and the GetStarted value is used as the product name. Stellen Sie sicher, dass der Wert für den Paketbezeichner mit dem Wert in Ihrem Xcode-Projekt übereinstimmt, sodass Xcode das richtige Veröffentlichungsprofil verwendet.Make sure the Bundle Identifier value matches the value in your Xcode project, so that Xcode uses the correct publishing profile.

      Seite zum Registrieren einer App-ID im iOS-Bereitstellungsportal

    • Push Notifications (Pushbenachrichtigungen): Aktivieren Sie die Option Pushbenachrichtigungen im Bereich Funktionen.Push Notifications: Check the Push Notifications option in the Capabilities section.

      Formular zum Registrieren einer neuen App-ID

      Hierdurch wird Ihre App-ID generiert, und Sie werden zur Bestätigung der Daten aufgefordert.This action generates your App ID and requests that you confirm the information. Wählen Sie Weiter und dann Registrieren aus, um die neue App-ID zu bestätigen.Select Continue, then select Register to confirm the new App ID.

      Neue App-ID bestätigen

      Nachdem Sie Registrieren ausgewählt haben, wird die neue App-ID als Position auf der Seite Zertifikate, Bezeichner und Profile angezeigt.After you select Register, you see the new App ID as a line item in the Certificates, Identifiers & Profiles page.

  4. Suchen Sie auf der Seite Zertifikate, Bezeichner und Profile unter Bezeichner die soeben erstellte App-ID-Position, und wählen Sie die zugehörige Zeile aus, um den Bildschirm zum Bearbeiten Ihrer App-ID-Konfiguration anzuzeigen.In the Certificates, Identifiers & Profiles page, under Identifiers, locate the App ID line item that you just created, and select its row to display the Edit your App ID Configuration screen.

  5. Scrollen Sie nach unten zur aktivierten Option Pushbenachrichtigungen, und wählen Sie dann Konfigurieren aus, um das Zertifikat zu erstellen.Scroll down to the checked Push Notifications option, and then select Configure to create the certificate.

    Bearbeiten der Seite für App-IDs

  6. Das Fenster für die SSL-Zertifikate von Apple Push Notification Service wird angezeigt.The Apple Push Notification service SSL Certificates window appears. Wählen Sie im Abschnitt des SSL-Zertifikats für die Entwicklung die Schaltfläche Zertifikat erstellen aus.Select the Create Certificate button under the Development SSL Certificate section.

    Schaltfläche zum Erstellen eines Zertifikats für die App-ID

    Der Bildschirm Ein neues Zertifikat erstellen wird angezeigt.The Create a new Certificate screen is displayed.

    Hinweis

    In diesem Lernprogramm wird ein Entwicklungszertifikat verwendet.This tutorial uses a development certificate. Derselbe Prozess wird auch zum Registrieren eines Produktionszertifikats durchgeführt.The same process is used when registering a production certificate. Achten Sie darauf, dass Sie denselben Zertifikattyp beim Senden von Benachrichtigungen verwenden.Just make sure that you use the same certificate type when sending notifications.

  7. Klicken Sie auf Datei auswählen, wechseln Sie zum Speicherort der in der ersten Aufgabe erstellten CSR-Datei, und doppelklicken Sie dann auf den Namen des Zertifikats, um es zu laden.Select Choose File, browse to the location where you saved the CSR file from the first task, and then double-click the certificate name to load it. Klicken Sie anschließend auf Weiter.Then select Continue.

  8. Wählen Sie nach der Erstellung des Zertifikats im Portal die Schaltfläche Herunterladen aus.After the portal creates the certificate, select the Download button. Speichern Sie das Zertifikat, und merken Sie sich den Speicherort.Save the certificate, and remember the location to which it's saved.

    Downloadseite für das generierte Zertifikat

    Das Zertifikat wird heruntergeladen und auf Ihrem Computer im Ordner Downloads gespeichert.The certificate is downloaded and saved to your computer in your Downloads folder.

    Suchen der Zertifikatdatei im Ordner „Downloads“

    Hinweis

    Standardmäßig heißt das heruntergeladene Entwicklungszertifikat aps_development.cer.By default, the downloaded development certificate is named aps_development.cer.

  9. Doppelklicken Sie auf dem heruntergeladenen Pushzertifikat aps_development.cer.Double-click the downloaded push certificate aps_development.cer. Das neue Zertifikat wird im Schlüsselbund installiert, wie in der folgenden Abbildung gezeigt:This action installs the new certificate in the Keychain, as shown in the following image:

    Zertifikatliste der Schlüsselbundverwaltung mit neuem Zertifikat

    Hinweis

    Der Name in Ihrem Zertifikat kann anders lauten, ihm wird jedoch Apple Development iOS Push Services vorangestellt.Although the name in your certificate might be different, the name will be prefixed with Apple Development iOS Push Services.

  10. Klicken Sie in der Kategorie Zertifikate in der Schlüsselbundverwaltung mit der rechten Maustaste auf das neu erstellte Pushzertifikat.In Keychain Access, right-click the new push certificate that you created in the Certificates category. Wählen Sie die Option Exportieren, benennen Sie die Datei, wählen Sie das Format .p12 aus, und wählen Sie dann die Option Speichern.Select Export, name the file, select the .p12 format, and then select Save.

    Exportieren des Zertifikats im p12-Format

    Sie können das Zertifikat mit einem Kennwort schützen, aber dies ist optional.You can choose to protect the certificate with a password, but this is optional. Wenn Sie die Kennworterstellung umgehen möchten, klicken Sie auf OK.Click OK if you want to bypass password creation. Notieren Sie sich den Dateinamen und den Speicherort des exportierten P12-Zertifikats,Make a note of the file name and location of the exported .p12 certificate. Sie werden zum Aktivieren der Authentifizierung mit APNs verwendet.They are used to enable authentication with APNs.

    Hinweis

    Dateiname und Speicherort Ihrer P12-Datei können sich von den in diesem Tutorial abgebildeten Informationen unterscheiden.Your .p12 file name and location might be different than what is pictured in this tutorial.

Erstellen eines Bereitstellungsprofils für die AppCreate a provisioning profile for the app

  1. Wechseln Sie zurück zum iOS-Bereitstellungsportal, wählen Sie Zertifikate, Bezeichner und Profile aus, wählen Sie im Menü auf der linken Seite Profile und dann + aus, um ein neues Profil zu erstellen.Return to the iOS Provisioning Portal, select Certificates, Identifiers & Profiles, select Profiles from the left menu, and then select + to create a new profile. Der Bildschirm zum Registrieren eines neuen Bereitstellungsprofils wird angezeigt.The Register a New Provisioning Profile screen appears.

  2. Wählen Sie unter Entwicklung, die Option iOS-App-Entwicklung als Bereitstellungsprofiltyp aus, und wählen Sie anschließend Weiter.Select iOS App Development under Development as the provisioning profile type, and then select Continue.

    Bereitstellungsprofilliste

  3. Wählen Sie anschließend die von Ihnen erstellte App-ID in der Dropdownliste App ID (App-ID) und dann Weiter aus.Next, select the app ID you created from the App ID drop-down list, and select Continue.

    Auswählen der App-ID

  4. Wählen Sie im Fenster Select certificates (Zertifikate auswählen) das Entwicklungszertifikat aus, das Sie für die Codesignierung verwenden, und wählen Sie dann Continue (Weiter).In the Select certificates window, select the development certificate that you use for code signing, and select Continue. Dabei handelt es sich nicht um das erstellte Pushzertifikat.This certificate isn't the push certificate you created. Wenn keines vorhanden ist, müssen Sie es erstellen.If one does not exist, you must create it. Wenn ein Zertifikat vorhanden ist, fahren Sie mit dem nächsten Schritt fort.If a certificate does exist, skip to the next step. Erstellen eines Entwicklungszertifikat, wenn noch keines vorhanden ist:To create a development certificate if one does not exist:

    1. Wenn No Certificates are available (Keine Zertifikate verfügbar) angezeigt wird, wählen Sie Create Certificate (Zertifikat erstellen) aus.If you see No Certificates are available, select Create Certificate.
    2. Wählen Sie im Abschnitt Software die Option Apple Development (Apple-Entwicklung) aus.In the Software section, select Apple Development. Klicken Sie anschließend auf Weiter.Then select Continue.
    3. Wählen Sie auf dem Bildschirm Neues Zertifikat erstellen die Option Datei auswählen.In the Create a New Certificate screen, select Choose File.
    4. Navigieren Sie zum Zertifikat Zertifikatsignieranforderung, das Sie zuvor erstellt haben, wählen Sie es aus, und wählen Sie dann Öffnen aus.Browse to the Certificate Signing Request certificate you created earlier, select it, and then select Open.
    5. Wählen Sie Weiter.Select Continue.
    6. Laden Sie das Entwicklungszertifikat herunter, und merken Sie sich den Speicherort.Download the development certificate, and remember the location to which it's saved.
  5. Wechseln Sie zurück zur Seite Zertifikate, Bezeichner und Profile, wählen Sie im Menü auf der linken Seite Profile und dann + aus, um ein neues Profil zu erstellen.Return to the Certificates, Identifiers & Profiles page, select Profiles from the left menu, and then select + to create a new profile. Der Bildschirm zum Registrieren eines neuen Bereitstellungsprofils wird angezeigt.The Register a New Provisioning Profile screen appears.

  6. Wählen Sie im Fenster Select certificates (Zertifikate auswählen) das soeben erstellte Entwicklungszertifikat aus.In the Select certificates window, select the development certificate that you just created. Klicken Sie anschließend auf Weiter.Then select Continue.

  7. Wählen Sie nun die Geräte aus, die zum Testen verwendet werden sollen, und wählen Sie dann Weiter aus.Next, select the devices to use for testing, and select Continue.

  8. Wählen Sie schließlich im Feld Provisioning Profile Name (Name des Bereitstellungsprofils) einen Namen für das Profil, und wählen Sie Generate (Generieren) aus.Finally, choose a name for the profile in Provisioning Profile Name, and select Generate.

    Auswählen eines Bereitstellungsprofilnamens

  9. Nachdem das neue Bereitstellungsprofil erstellt wurde, wählen Sie Herunterladen aus.When the new provisioning profile is created, select Download. Merken Sie sich den Speicherort des Profils.Remember the location to which it's saved.

  10. Navigieren Sie zum Speicherort des Bereitstellungsprofils, und doppelklicken Sie darauf, um es auf dem Xcode-Entwicklungscomputer zu installieren.Browse to the location of the provisioning profile, and then double-click it to install it on your Xcode development machine.

Erstellen eines Notification HubsCreate a notification hub

In diesem Abschnitt erstellen Sie einen Notification Hub und konfigurieren die Authentifizierung mit APNs unter Verwendung des zuvor erstellten Pushzertifikats vom Typ „.p12“.In this section, you create a notification hub and configure authentication with APNs by using the .p12 push certificate that you previously created. Wenn Sie einen bereits erstellten Notification Hub verwenden möchten, können Sie mit Schritt 5 fortfahren.If you want to use a notification hub that you've already created, you can skip to step 5.

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.

  2. Wählen Sie im Menü auf der linken Seite die Option Alle Dienste und dann im Abschnitt Mobil die Option Notification Hubs aus.Select All services on the left menu, and then select Notification Hubs in the Mobile section. Wählen Sie das Sternsymbol neben dem Dienstnamen aus, um den Dienst im linken Menü zum Abschnitt FAVORITEN hinzuzufügen.Select the star icon next to the service name to add the service to the FAVORITES section on the left menu. Nachdem Notification Hubs unter FAVORITEN hinzugefügt wurde, können Sie diesen Eintrag im Menü auf der linken Seite auswählen.After you add Notification Hubs to FAVORITES, select it on the left menu.

    Azure-Portal – Auswählen von Notification Hubs

  3. Wählen Sie auf der Seite Notification Hubs in der Symbolleiste die Option Hinzufügen.On the Notification Hubs page, select Add on the toolbar.

    Notification Hubs – Symbolleistenschaltfläche „Hinzufügen“

  4. Führen Sie auf der Seite Notification Hub die folgenden Schritte aus:On the Notification Hub page, do the following steps:

    1. Geben Sie ins Feld Notification Hub einen Namen ein.Enter a name in Notification Hub.

    2. Geben Sie ins Feld Neuen Namespace erstellen einen Namen ein.Enter a name in Create a new namespace. Ein Namespace enthält mindestens einen Hub.A namespace contains one or more hubs.

    3. Wählen Sie im Dropdown-Listenfeld Standort einen Wert aus.Select a value from the Location drop-down list box. Dieser Wert gibt den Standort an, an dem der Hub erstellt werden soll.This value specifies the location in which you want to create the hub.

    4. Wählen Sie unter Ressourcengruppe eine vorhandene Ressourcengruppe aus, oder erstellen Sie einen Namen für eine neue Ressourcengruppe.Select an existing resource group in Resource Group, or create a name for a new resource group.

    5. Klicken Sie auf Erstellen.Select Create.

      Azure-Portal – Festlegen von Eigenschaften für den Notification Hub

  5. Wählen Sie Benachrichtigungen (Glockensymbol) und dann Zu Ressource wechseln aus.Select Notifications (the bell icon), and then select Go to resource. Sie können auch die Liste auf der Seite Notification Hubs aktualisieren und Ihren Hub auswählen.You can also refresh the list on the Notification Hubs page and select your hub.

    Azure-Portal – Benachrichtigungen -> Zu Ressource wechseln

  6. Wählen Sie in der Liste die Option Zugriffsrichtlinien aus.Select Access Policies from the list. Notieren Sie sich die beiden Verbindungszeichenfolgen, die für Sie verfügbar sind.Note that the two connection strings are available to you. Sie werden später für die Behandlung von Pushbenachrichtigungen benötigt.You'll need them later to handle push notifications.

    Wichtig

    Verwenden Sie nicht die Richtlinie DefaultFullSharedAccessSignature in Ihrer Anwendung.Do not use the DefaultFullSharedAccessSignature policy in your application. Diese ist nur für die Verwendung in Ihrem Back-End vorgesehen.This is meant to be used in your back end only.

    Azure-Portal – Verbindungszeichenfolgen für den Notification Hub

Konfigurieren Ihres Notification Hubs mit APNs-InformationenConfigure your notification hub with APNs information

  1. Wählen Sie unter Notification Services die Option Apple (APNS) aus.Under Notification Services, select Apple (APNS).

  2. Wählen Sie Certificateaus.Select Certificate.

  3. Wählen Sie das Dateisymbol aus.Select the file icon.

  4. Wählen Sie die zuvor exportierte P12-Datei aus, und wählen Sie dann Öffnen.Select the .p12 file that you exported earlier, and then select Open.

  5. Geben Sie bei Bedarf das richtige Kennwort an.If required, specify the correct password.

  6. Wählen Sie den Modus Sandbox aus.Select Sandbox mode. Verwenden Sie den Modus Produktion nur dann, wenn Sie Pushbenachrichtigungen an Benutzer senden möchten, die Ihre App im Store erworben haben.Use the Production mode only if you want to send push notifications to users who purchased your app from the store.

    Konfigurieren der APNs-Zertifizierung im Azure-Portal

  7. Wählen Sie Speichern aus.Select Save.

Sie haben Ihren Notification Hub mit APNs-Informationen konfiguriert.You've now configured your notification hub with APNs. Sie verfügen außerdem über die Verbindungszeichenfolgen, die Sie zum Registrieren Ihrer App und zum Senden von Pushbenachrichtigungen benötigen.You also have the connection strings to register your app and send push notifications.

Verbinden der iOS-App mit Notification HubsConnect your iOS app to Notification Hubs

  1. Erstellen Sie in Xcode ein neues iOS-Projekt, und wählen Sie die Vorlage Single View Application aus.In Xcode, create a new iOS project and select the Single View Application template.

    Xcode – Single View Application

  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.When setting the options for your new project, make sure to use the same Product Name and Organization Identifier that you used when you set the bundle identifier in the Apple Developer portal.

  3. Wählen Sie im Projektnavigator unter Ziele Ihren Projektnamen und anschließend die Registerkarte Signing & Capabilities (Signieren und Funktionen) aus. Wählen Sie das passende Team für Ihr Apple-Entwicklerkonto aus.Under Project Navigator, select your project name under Targets, then select the Signing & Capabilities tab. Make sure you select the appropriate Team for your Apple Developer account. Xcode sollte auf der Grundlage Ihrer Paket-ID automatisch das Bereitstellungsprofil abrufen, das Sie zuvor erstellt haben.XCode should automatically pull down the Provisioning Profile you created previously based on your bundle identifier.

    Wenn das neue in Xcode erstellte Bereitstellungsprofil nicht angezeigt wird, versuchen Sie, die Profile für Ihre Signaturidentität zu aktualisieren.If you don't see the new provisioning profile that you created in Xcode, try refreshing the profiles for your signing identity. 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“.Click Xcode on the menu bar, click Preferences, click the Account tab, click the View Details button, click your signing identity, and then click the refresh button in the bottom-right corner.

    Xcode – Bereitstellungsprofil

  4. Wählen Sie auf der Registerkarte Signing & Capabilities (Signieren und Funktionen) die Option + Funktion aus.In the Signing & Capabilities tab, select + Capability. Doppelklicken Sie zum Aktivieren auf Pushbenachrichtigungen.Double-click Push Notifications to enable it.

    Xcode – Pushfunktionen

  5. Fügen Sie die Module für das Azure Notification Hubs SDK hinzu.Add the Azure Notification Hubs SDK modules.

    Sie können das Azure Notification Hubs SDK in Ihre App integrieren. Verwenden Sie dazu CocoaPods, oder fügen Sie die Binärdateien Ihrem Projekt manuell hinzu.You can integrate the Azure Notification Hubs SDK in your app by using Cocoapods or by manually adding the binaries to your project.

    • Integration über CocoaPodsIntegration via Cocoapods

      Fügen Sie die folgenden Abhängigkeiten zu podfile hinzu, um das Azure Notification Hubs SDK in Ihre App zu integrieren.Add the following dependencies to your podfile to include Azure Notification Hubs SDK into your app.

      pod 'AzureNotificationHubs-iOS'
      

      Führen Sie pod install aus, um Ihren neu definierten Pod zu installieren, und öffnen Sie .xcworkspace.Run pod install to install your newly defined pod and open your .xcworkspace.

      Hinweis

      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.If you see an error such as [!] Unable to find a specification for AzureNotificationHubs-iOS while running pod install, please run pod repo update to get the latest pods from the Cocoapods repository, and then run pod install.

    • Integration über CarthageIntegration via Carthage

      Fügen Sie die folgenden Abhängigkeiten zu Cartfile hinzu, um das Azure Notification Hubs SDK in Ihre App zu integrieren.Add the following dependencies to your Cartfile to include Azure Notification Hubs SDK into your app.

      github "Azure/azure-notificationhubs-ios"
      

      Aktualisieren und erstellen Sie als Nächstes die Abhängigkeiten:Next, update, and build dependencies:

      $ carthage update
      

      Weitere Informationen zur Verwendung von Carthage finden Sie im GitHub-Repository für Carthage.For more information about using Carthage, see the Carthage GitHub repository.

    • Integration durch Kopieren der Binärdateien in Ihr ProjektIntegration by copying the binaries into your project

      1. Laden Sie das als ZIP-Datei bereitgestellte Framework für das Azure Notification Hubs SDK herunter, und entzippen Sie es.Download the Azure Notification Hubs SDK framework provided as a zip file and unzip it.

      2. 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.In Xcode, right-click your project and click the Add Files to option to add the WindowsAzureMessaging.framework folder to your Xcode project. 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.Select Options and make sure Copy items if needed is selected, and then click Add.

        Azure SDK entzippen

  6. Fügen Sie Ihrem Projekt eine neue Headerdatei namens Constants.h hinzu.Add a new header file to your project named Constants.h. Klicken Sie hierzu mit der rechten Maustaste auf den Projektnamen, und wählen Sie Neue Datei... aus. Wählen Sie dann Headerdatei aus.To do so, right-click the project name and select New File.... Then select Header File. Diese Datei enthält die Konstanten für Ihren Notification Hub.This file holds the constants for your notification hub. Klicken Sie anschließend auf Weiter.Then select Next. Geben Sie der Datei den Namen Constants.h.Name the file Constants.h.

  7. Fügen Sie der Datei „Constants.h“ den folgenden Code hinzu:Add the following code to the Constants.h file:

    #ifndef Constants_h
    #define Constants_h
    
    extern NSString* const NHInfoConnectionString;
    extern NSString* const NHInfoHubName;
    extern NSString* const NHUserDefaultTags;
    
    #endif /* Constants_h */
    
  8. Fügen Sie für „Constants.h“ die Implementierungsdatei hinzu.Add the implementation file for Constants.h. Klicken Sie hierzu mit der rechten Maustaste auf den Projektnamen, und wählen Sie Neue Datei... aus. Wählen Sie Objective-C File (Objective-C-Datei) und anschließend Weiter aus.To do so, right-click the project name and select New File.... Select Objective-C File, and then select Next. Geben Sie der Datei den Namen Constants.m.Name the file Constants.m.

    Hinzufügen der M-Datei

  9. Öffnen Sie die Datei Constants.m, und ersetzen Sie ihren Inhalt durch den folgenden Code.Open the Constants.m file and replace its contents with the following code. Ersetzen Sie die Platzhalter für Zeichenfolgenliterale NotificationHubConnectionString und NotificationHubConnectionString durch den Hubnamen und DefaultListenSharedAccessSignature, die Sie zuvor aus dem Portal abgerufen haben:Replace the string literal placeholders NotificationHubConnectionString and NotificationHubConnectionString with the hub name and the DefaultListenSharedAccessSignature, respectively, as you previously obtained from the portal:

    #import <Foundation/Foundation.h>
    #import "Constants.h"
    
    NSString* const NHInfoConnectionString = @"NotificationHubConnectionString";
    NSString* const NHInfoHubName = @"NotificationHubName";
    NSString* const NHUserDefaultTags = @"notification_tags";
    
  10. Öffnen Sie die Datei AppDelegate.h des Projekts, und ersetzen Sie ihren Inhalt durch den folgenden Code:Open your project's AppDelegate.h file and replace its contents with the following code:

    #import <UIKit/UIKit.h>
    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    #import <UserNotifications/UserNotifications.h> 
    
    @interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate>
    
    @property (strong, nonatomic) UIWindow *window;
    
    - (void)handleRegister;
    - (void)handleUnregister;
    
    @end
    
    
  11. Öffnen Sie die Datei AppDelegate.m des Projekts, und fügen Sie die folgenden import-Anweisungen hinzu:In the project's AppDelegate.m file, add the following import statements:

    #import "Constants.h"
    #import "NotificationDetailViewController.h"
    
  12. Fügen Sie ebenfalls in der Datei AppDelegate.m der Methode didFinishLaunchingWithOptions die folgende Codezeile hinzu (abhängig von Ihrer iOS-Version).Also in your AppDelegate.m file, add the following line of code in the didFinishLaunchingWithOptions method based on your version of iOS. Dieser Code registriert Ihr Gerätehandle bei APNS:This code registers your device handle with APNs:

    [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
    
  13. Ersetzen Sie in derselben Datei AppDelegate.m den gesamten Code nach didFinishLaunchingWithOptions durch den folgenden Code:In the same AppDelegate.m file, replace all the code after didFinishLaunchingWithOptions with the following code:

    // Tells the app that a remote notification arrived that indicates there is data to be fetched.
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler {
        NSLog(@"Received remote (silent) notification");
        [self logNotificationDetails:userInfo];
    
        //
        // Let the system know the silent notification has been processed.
        //
        completionHandler(UIBackgroundFetchResultNoData);
    }
    
    // Tells the delegate that the app successfully registered with Apple Push Notification service (APNs).
    
    - (void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        NSMutableSet *tags = [[NSMutableSet alloc] init];
    
        // Load and parse stored tags
        NSString *unparsedTags = [[NSUserDefaults standardUserDefaults] valueForKey:NHUserDefaultTags];
        if (unparsedTags.length > 0) {
            NSArray *tagsArray = [unparsedTags componentsSeparatedByString: @","];
            [tags addObjectsFromArray:tagsArray];
        }
    
        // Register the device with the Notification Hub.
        // If the device has not already been registered, this will create the registration.
        // If the device has already been registered, this will update the existing registration.
        //
        SBNotificationHub* hub = [self getNotificationHub];
        [hub registerNativeWithDeviceToken:deviceToken tags:tags completion:^(NSError* error) {
            if (error != nil) {
                NSLog(@"Error registering for notifications: %@", error);
            } else {
                [self showAlert:@"Registered" withTitle:@"Registration Status"];
            }
        }];
    }
    
    // UNUserNotificationCenterDelegate methods
    //
    // Asks the delegate how to handle a notification that arrived while the app was running in the  foreground.
    
    - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
        NSLog(@"Received notification while the application is in the foreground");
    
        // The system calls this delegate method when the app is in the foreground. This allows the app to handle the notification
        // itself (and potentially modify the default system behavior).
    
        // Handle the notification by displaying custom UI.
        //
        [self showNotification:notification.request.content.userInfo];
    
        // Use 'options' to specify which default behaviors to enable.
        // - UNAuthorizationOptionBadge: Apply the notification's badge value to the app’s icon.
        // - UNAuthorizationOptionSound: Play the sound associated with the notification.
        // - UNAuthorizationOptionAlert: Display the alert using the content provided by the notification.
        //
        // In this case, do not pass UNAuthorizationOptionAlert because the notification was handled by the app.
        //
        completionHandler(UNAuthorizationOptionBadge | UNAuthorizationOptionSound);
    }
    
    // Asks the delegate to process the user's response to a delivered notification.
    //
    
    - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler {
        NSLog(@"Received notification while the application is in the background");
    
        // The system calls this delegate method when the user taps or responds to the system notification.
    
        // Handle the notification response by displaying custom UI
        //
        [self showNotification:response.notification.request.content.userInfo];
    
        // Let the system know the response has been processed.
        //
        completionHandler();
    }
    
    // App logic and helpers
    
    - (SBNotificationHub *)getNotificationHub {
        NSString *hubName = [[NSBundle mainBundle] objectForInfoDictionaryKey:NHInfoHubName];
        NSString *connectionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:NHInfoConnectionString];
    
        return [[SBNotificationHub alloc] initWithConnectionString:connectionString notificationHubPath:hubName];
    }
    
    - (void)handleRegister {
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    
        UNAuthorizationOptions options =  UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
        [center requestAuthorizationWithOptions:(options) completionHandler:^(BOOL granted, NSError * _Nullable error) {
            if (error != nil) {
                NSLog(@"Error requesting for authorization: %@", error);
            }
        }];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    }
    
    - (void)handleUnregister {
        //
        // Unregister the device with the Notification Hub.
        //
        SBNotificationHub *hub = [self getNotificationHub];
        [hub unregisterNativeWithCompletion:^(NSError* error) {
            if (error != nil) {
                NSLog(@"Error unregistering for push: %@", error);
            } else {
                [self showAlert:@"Unregistered" withTitle:@"Registration Status"];
            }
        }];
    }
    
    - (void)logNotificationDetails:(NSDictionary *)userInfo {
        if (userInfo != nil) {
            UIApplicationState state = [UIApplication sharedApplication].applicationState;
            BOOL background = state != UIApplicationStateActive;
            NSLog(@"Received %@notification: \n%@", background ? @"(background) " : @"", userInfo);
        }
    }
    
    - (void)showAlert:(NSString *)message withTitle:(NSString *)title {
        if (title == nil) {
            title = @"Alert";
        }
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
        [[[[UIApplication sharedApplication] keyWindow] rootViewController] presentViewController:alert animated:YES completion:nil];
    }
    
    - (void)showNotification:(NSDictionary *)userInfo {
        [self logNotificationDetails:userInfo];
    
        NotificationDetailViewController *notificationDetail = [[NotificationDetailViewController alloc] initWithUserInfo:userInfo];
        [[[[UIApplication sharedApplication] keyWindow] rootViewController] presentViewController:notificationDetail animated:YES completion:nil];
    }
    
    @end
    

    Mit diesem Code wird eine Verbindung mit dem Benachrichtigungs-Hub mithilfe der in Constants.h angegebenen Verbindungsinformationen hergestellt.This code connects to the notification hub using the connection information you specified in Constants.h. Dieser Code übergibt das Gerätetoken an den Notification Hub, sodass dieser Benachrichtigungen senden kann.It then gives the device token to the notification hub so that the notification hub can send notifications.

NotificationDetailViewControllerNotificationDetailViewController

  1. Fügen Sie wie in den vorherigen Anweisungen eine weitere Headerdatei mit dem Namen NotificationDetailViewController.h hinzu.Similar the previous instructions, add another header file named NotificationDetailViewController.h. Ersetzen Sie den Inhalt der neuen Headerdatei durch den folgenden Code:Replace the contents of the new header file with the following code:

    #import <UIKit/UIKit.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface NotificationDetailViewController : UIViewController
    
    @property (strong, nonatomic) IBOutlet UILabel *titleLabel;
    @property (strong, nonatomic) IBOutlet UILabel *bodyLabel;
    @property (strong, nonatomic) IBOutlet UIButton *dismissButton;
    
    @property (strong, nonatomic) NSDictionary *userInfo;
    
    - (id)initWithUserInfo:(NSDictionary *)userInfo;
    
    @end
    
    NS_ASSUME_NONNULL_END
    
  2. Fügen Sie die Implementierungsdatei NotificationDetailViewController.m hinzu.Add the implementation file NotificationDetailViewController.m. Ersetzen Sie den Inhalt der Datei durch den folgenden Code. Dadurch werden die UIViewController-Methoden implementiert:Replace the contents of the file with the following code, which implements the UIViewController methods:

    #import "NotificationDetailViewController.h"
    
    @interface NotificationDetailViewController ()
    
    @end
    
    @implementation NotificationDetailViewController
    
    - (id)initWithUserInfo:(NSDictionary *)userInfo {
        self = [super initWithNibName:@"NotificationDetail" bundle:nil];
        if (self) {
            _userInfo = userInfo;
        }
        return self;
    }
    
    - (void)viewDidLayoutSubviews {
        [self.titleLabel sizeToFit];
        [self.bodyLabel sizeToFit];
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        NSString *title = nil;
        NSString *body = nil;
    
        NSDictionary *aps = [_userInfo valueForKey:@"aps"];
        NSObject *alertObject = [aps valueForKey:@"alert"];
        if (alertObject != nil) {
            if ([alertObject isKindOfClass:[NSDictionary class]]) {
                NSDictionary *alertDict = (NSDictionary *)alertObject;
                title = [alertDict valueForKey:@"title"];
                body = [alertObject valueForKey:@"body"];
            } else if ([alertObject isKindOfClass:[NSString class]]) {
                body = (NSString *)alertObject;
            } else {
                NSLog(@"Unable to parse notification content. Unexpected format: %@", alertObject);
            }
        }
    
        if (title == nil) {
            title = @"<unset>";
        }
    
        if (body == nil) {
            body = @"<unset>";
        }
    
        self.titleLabel.text = title;
        self.bodyLabel.text = body;
    }
    
    - (IBAction)handleDismiss:(id)sender {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    
    @end
    

ViewControllerViewController

  1. Fügen Sie in der Datei ViewController.h des Projekts die folgenden import-Anweisungen hinzu:In the project's ViewController.h file, add the following import statements:

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    #import <UserNotifications/UserNotifications.h>
    
  2. Fügen Sie außerdem in ViewController.h die folgenden Eigenschaftendeklarationen nach der Deklaration @interface hinzu:Also in ViewController.h, add the following property declarations after the @interface declaration:

    @property (strong, nonatomic) IBOutlet UITextField *tagsTextField;
    @property (strong, nonatomic) IBOutlet UIButton *registerButton;
    @property (strong, nonatomic) IBOutlet UIButton *unregisterButton;
    
  3. Ersetzen Sie in der Implementierungsdatei ViewController.m des Projekts ihren Inhalt durch den folgenden Code:In the project's ViewController.m implementation file, replace the contents of the file with the following code:

    #import "ViewController.h"
    #import "Constants.h"
    #import "AppDelegate.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    // UIViewController methods
    
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        // Simple method to dismiss keyboard when user taps outside of the UITextField.
        [self.view endEditing:YES];
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        // Load raw tags text from storage and initialize the text field
        self.tagsTextField.text = [[NSUserDefaults standardUserDefaults] valueForKey:NHUserDefaultTags];
    }
    
    - (IBAction)handleRegister:(id)sender {
        // Save raw tags text in storage
        [[NSUserDefaults standardUserDefaults] setValue:self.tagsTextField.text forKey:NHUserDefaultTags];
    
    // Delegate processing the register action to the app delegate.
    [[[UIApplication sharedApplication] delegate] performSelector:@selector(handleRegister)];
    }
    
    - (IBAction)handleUnregister:(id)sender {
        [[[UIApplication sharedApplication] delegate] performSelector:@selector(handleUnregister)];
    }
    
    @end
    
  4. Erstellen Sie die App auf Ihrem Gerät, und führen Sie sie dort aus, um Fehler auszuschließen.To verify there are no failures, build and run the app on your device.

Senden von Test-PushbenachrichtigungenSend test push notifications

Mit der Option Testsendevorgang im Azure-Portal können Sie den Empfang von Benachrichtigungen in Ihrer App testen.You can test receiving notifications in your app with the Test Send option in the Azure portal. Diese Option sendet zu Testzwecken eine Pushbenachrichtigung an Ihr Gerät.It sends a test push notification to your device.

Azure-Portal – Testsendung

Pushbenachrichtigungen werden normalerweise mithilfe einer kompatiblen Bibliothek über einen Back-End-Dienst wie Mobile Apps oder ASP.NET gesendet.Push notifications are normally sent in a back-end service like Mobile Apps or ASP.NET using a compatible library. Falls für Ihr Back-End keine Bibliothek verfügbar ist, können Sie Benachrichtigungen auch direkt über die REST-API senden.If a library isn't available for your back end, you can also use the REST API directly to send notification messages.

Es folgen einige andere Tutorials, die Informationen zum Senden von Benachrichtigungen enthalten:Here is a list of some other tutorials you might want to review for sending notifications:

Überprüfen, ob die App Pushbenachrichtigungen empfängtVerify that your app receives push notifications

Zum Testen von Pushbenachrichtigungen unter iOS müssen Sie die App auf einem physischen iOS-Gerät bereitstellen.To test push notifications on iOS, you must deploy the app to a physical iOS device. Sie können keine Apple-Pushbenachrichtigungen mit dem iOS-Simulator senden.You cannot send Apple push notifications by using the iOS Simulator.

  1. Führen Sie die App aus, und überprüfen Sie, ob die Registrierung erfolgreich ist. Drücken Sie dann OK.Run the app and verify that registration succeeds, and then press OK.

    Registrierungstest für iOS-App-Pushbenachrichtigungen

  2. Als Nächstes senden Sie zu Testzwecken eine Pushbenachrichtigung über das Azure-Portal, wie im vorherigen Abschnitt beschrieben.Next you send a test push notification from the Azure portal, as described in the previous section.

  3. Die Pushbenachrichtigung wird an alle Geräte gesendet, die dafür registriert sind, die Benachrichtigungen vom jeweiligen Notification Hub zu erhalten.The push notification is sent to all devices that are registered to receive the notifications from the particular Notification Hub.

    iOS-App-Pushbenachrichtigung – Testempfang

Nächste SchritteNext steps

In diesem einfachen Beispiel haben Sie Pushbenachrichtigungen an alle Ihre registrierten iOS-Geräte übertragen.In this simple example, you broadcasted push notifications to all your registered iOS devices. Um zu erfahren, wie Sie Pushbenachrichtigungen an bestimmte iOS-Geräte senden, fahren Sie mit dem folgenden Tutorial fort:To learn how to push notifications to specific iOS devices, advance to the following tutorial: