IBM Cloud Docs
Erstellen und Senden von Push-Benachrichtigungen an iOS mit Event Notifications

Erstellen und Senden von Push-Benachrichtigungen an iOS mit Event Notifications

Erstellen Sie einen Event Notifications-Service, fügen Sie ein Push-Ziel für Apple Push Notification Service (APNs) hinzu und senden Sie Nachrichten an iOS-Geräte.

Was ist Event Notifications?

Event Notifications ist ein Routing-Dienst für Ereignisbenachrichtigungen, der Sie über kritische Ereignisse in Ihrem IBM Cloud benachrichtigt oder mithilfe von Webhooks automatisierte Aktionen auslöst. Sie können Ereignisbenachrichtigungen von IBM Cloud wie Availability Monitoring filtern und an E-Mail, SMS, Push-Benachrichtigungen (FCM oder APNs) und Webhooks weiterleiten.

Wie verwenden Clients iOS Push-Benachrichtigungen?

Das folgende Diagramm zeigt, wie Clients iOS-Push-Benachrichtigungen verwenden.

Wie Kunden
Kunden Push-Benachrichtigungen

Ziele

Dieses Lernprogramm zeigt im Folgenden, wie Sie Push-Benachrichtigungen senden:

  • Erstellen Sie eine mobile App mit Event Notifications.
  • APNs-Berechtigungsnachweise abrufen.
  • Laden Sie den Code herunter und schließen Sie die Benachrichtigungskonfiguration ab.
  • Konfigurieren und senden Sie iOS-Push-Benachrichtigungen an ein mobiles Gerät.

Vorbereitende Schritte

Folgende Voraussetzungen müssen erfüllt sein:

  • Ein IBM Cloud-Konto. Wenn Sie nicht über ein Konto verfügen, erstellen Sie ein IBM Cloud-Konto.
  • Eine Event Notifications.
  • Ein IAM-API-Schlüssel, mit dem das SDK auf Ihr Konto zugreifen kann. Erstellen Sie eine hier.
  • Xcode 9.3+
  • Swift 4.2+
  • iOS 10.0+

Erstellen Sie eine Event Notifications-Serviceinstanz.

  • Melden Sie sich bei IBM Cloud-Accountan.
  • Suchen Sie im KatalogIBM Cloud nach " Event Notifications > Event Notifications.
  • Wählen Sie eine Region in der Liste der unterstützten Regionen und eine pricing plan aus.
  • Geben Sie eine Service name an.
  • Wählen Sie eine resource group aus.
  • Akzeptieren Sie die Lizenzvereinbarungen und Bedingungen, indem Sie auf das Kontrollkästchen klicken.
  • Klicken Sie auf Create.

APNs-Berechtigungsnachweise abrufen

Bei iOS-Geräten und -Anwendungen können Anwendungsentwickler mit dem Apple Push Notification Service (APNs) ferne Benachrichtigungen von der Event Notifications-Serviceinstanz in IBM Cloud (dem Provider) an iOS-Geräte und -Anwendungen senden. Die Nachrichten werden an eine Zielanwendung auf dem Gerät gesendet.

Sie müssen die APNs-Berechtigungsnachweise abrufen und konfigurieren. Die APNs-Zertifikate werden vom Event Notifications-Service sicher verwaltet und zum Herstellen einer Verbindung zum APNs-Server als Provider verwendet.

App-IDs registrieren

Die App-ID (Bundle-ID) ist eine eindeutige Kennung für eine bestimmte Anwendung. Für jede Anwendung ist eine App-ID erforderlich. Services wie der Push-Benachrichtigungs-Service werden für App-ID konfiguriert.

  • Gehen Sie zum Apple-Entwicklerportal und wählen Sie Zertifikate, Identifikatoren und Profile.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Rufen Sie Identifiers > Add identifier button auf.

    Identifier button
    Identifier Button

  • Klicken Sie auf die Schaltfläche "Neuen Identifier hinzufügen".

    ![](images/en-apns-new-identifier-button.png ""Neuen Bezeichner hinzufügen "*Schaltfläche "Neuen Bezeichner hinzufügen "*Schaltfläche "Neuen Bezeichner ")

  • Wählen Sie die Option App-IDs aus.

    App IDs option
    App IDs option

  • Wählen Sie einen Typ aus und klicken Sie auf Continue.

    App ID type
    App ID type

  • Geben Sie eine Zeichenfolge für das App-ID-Präfix an. Geben Sie den Namen der App in das Feld " Description ein. Beispiel: Event Notifications iOS-Anwendung

  • Wählen Sie für " Bundle ID die Option Explizit und geben Sie einen Wert für die Bündel-ID an. Es wird empfohlen, die umgekehrte Zeichenfolge eines Domänennamens zu verwenden. Zum Beispiel com.ibm.cloud.en.app.

    Neue App ID{: caption="erstellenNeue App ID " caption-side="bottom"} erstellen

  • Wählen Sie das Kontrollkästchen Push Notifications in den Funktionen aus und klicken Sie auf Continue.

    caption-side=bottom"

  • Gehen Sie Ihre Einstellungen durch und klicken Sie auf Register > Done.

Ihre App-ID ist nun registriert.

App ID
Newly created App ID

SSL-Zertifikat zum Entwickeln und Verteilen von APNs erstellen

Bevor Sie ein APNs-Zertifikat anfordern, müssen Sie zunächst eine Zertifikatssignieranforderung (Certificate Signing Request, CSR) generieren und an die Zertifizierungsstelle (Certificate Authority, CA) von Apple schicken. Die CSR enthält Informationen zum Identifizieren Ihres Unternehmens und beinhaltet Ihren öffentlichen sowie Ihren privaten Schlüssel, den Sie zum Signieren Ihrer Apple-Push-Benachrichtigungen verwenden. Generieren Sie anschließend das SSL-Zertifikat in iOS Developer Portal. Das Zertifikat mit dem zugehörigen öffentlichen und privaten Schlüssel wird in Keychain Access gespeichert.

Sie können APNs auf zwei Weisen verwenden:

  • Sandboxmodus zum Entwickeln und Testen.
  • Produktionsmodus zum Verteilen von Anwendungen über den App Store (oder über die Verteilungsmechanismen anderer Unternehmen.

Sie müssen separate Zertifikate für Ihre Entwicklungs- und Verteilungsumgebungen anfordern. Die Zertifikate werden einer App-ID für die App zugeordnet, die der Empfänger für ferne Benachrichtigungen ist. Für die Produktion können Sie bis zu zwei Zertifikate erstellen. IBM Cloud verwendet die Zertifikate zum Herstellen einer SSL-Verbindung zu APNs.

APN-Zertifikat (p12) erstellen

  • Rufen Sie das Apple Developer Portal auf und wählen Sie Zertifikate, IDs & Profile aus.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Wählen Sie in Identifiers area Ihre App-ID aus.

    ![](images/en-apns-app-id.png ""Identifikatoren" * "){: caption=""Identifikatoren" * " caption-side="bottom"} "Identifikatoren" *

  • Wählen Sie das Kontrollkästchen Push Notifications ODER die Option Edit aus.

    caption-side=bottom"
    Push-Benachrichtigungen

    • Klicken Sie im Bereich "SSL-Zertifikat für Entwicklung" auf "Zertifikat erstellen" ...
    • Klicken Sie im Bereich "Produktions-SSL-Zertifikat" auf "Zertifikat erstellen" ...

    Certificate type
    Certificate type

  • Verwenden Sie die Keychain Access-Anwendung auf Ihrem Mac, um eine Zertifikatssignieranforderung (CSR) zu erstellen.

  • Wählen Sie aus dem Menü " Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority….

    caption-side=bottom"
    Neues
    anfordern*

  • Geben Sie unter Zertifikatsinformationen die E-Mail-Adresse, die Ihrem App-Entwicklerkonto zugeordnet ist, und einen allgemeinen Namen ein. Geben Sie einen aussagekräftigen Namen an, mit dem Sie ermitteln können, ob es sich um ein Zertifikat für die Entwicklung (Sandbox) oder Verteilung (Produktion) handelt, z. B. sandbox-apns-zertifikat oder production-apns-zertifikat.

  • Wählen Sie Saved to disk aus, um die Datei .certSigningRequest auf Ihren Mac herunterzuladen, und klicken dann auf Continue.

    Certificate details
    Certificate details

  • Benennen Sie die Datei .certSigningRequest in der Menüoption Save As, wählen Sie die Position aus, an der die Datei gespeichert sein muss und klicken Sie auf Save.

    Save CSR file
    Save CSR file

  • Klicken Sie auf Done. Sie haben eine CSR erstellt.

    caption-side=bottom"
    CSR

  • Gehen Sie zurück zum Apple-Entwicklerportal, klicken Sie bei der Option CSR-Datei hochladen auf Datei auswählen und wählen Sie die Datei " CertificateSigningRequest.certSigningRequest. Klicken Sie auf Continue.

    caption-side=bottom"
    hochladen*

  • Klicken Sie auf Download. Die Datei aps_development.cer wird heruntergeladen.

    caption-side=bottom"
    Download

  • Suchen Sie das neu installierte Zertifikat. Doppelklicken Sie auf das Zertifikat, damit es in Keychain Access installiert wird.

  • Gehen Sie auf Ihrem Mac zu Keychain Access > My Certificates.

  • Wählen Sie das Zertifikat und den privaten Schlüssel aus und wählen Sie dann Export aus, um das Zertifikat in das persönliche Datenaustauschformat (.p12-Format) zu konvertieren.

    caption-side=bottom"

  • Geben Sie im Feld Save As einen aussagekräftigen Namen für das Zertifikat an. Beispiel: sandbox-apns.p12 oder production-apns.p12. Klicken Sie dann auf Save.

    caption-side=bottom"

  • Geben Sie im Feld Enter a password ein Kennwort ein, um die exportierten Elemente zu schützen, und klicken Sie anschließend auf OK. Dieses Kennwort können Sie verwenden, um Ihre APNs-Einstellungen in der Event Notifications-Servicekonsole zu konfigurieren.

    caption-side=bottom"

  • Die Key Access-App fordert Sie auf, Ihren Schlüssel aus der Keychain-Anzeige zu exportieren. Geben Sie Ihr Administratorkennwort für Ihren Mac ein, damit Ihr System diese Elemente exportieren kann, und wählen Sie dann die Option 'Immer zulassen' aus. An der ausgewählten Position wird ein .p12-Zertifikat generiert.

APN-Token (p8) erstellen

  • Rufen Sie das Apple-Entwicklerportal auf und wählen Sie " Certificates, Identifiers & Profiles.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Gehen Sie zur Registerkarte ' Keys.

    ![Registerkarte "Tasten](images/en-apns-keys-tab.png ""Tasten "*Registerkarte "")

  • Geben Sie Key Name ein und aktivieren Sie APNs und klicken Sie auf continue.

    P8 token details
    P8 token details

  • Klicken Sie auf Register.

    Register p8 token
    Register p8 token

  • Stellen Sie sicher, dass Sie die Schlüssel nach der Registrierung auf einer neuen Seite herunterladen, da es sich um einen einmaligen Vorgang handelt.

KeyID ist als Teil der Datei sichtbar und wird in der Benutzeroberfläche angezeigt, dieser " KeyID wird für die Registrierung des APNS-Zertifikats verwendet. TeamID wird von Apple für das Entwicklerkonto bereitgestellt und ist neben dem Teamnamen zu sehen. TeamID wird für die Registrierung des APNS-Zertifikats verwendet. BundleID kann wie das P12 registriert werden.

Generische API-Quelle hinzufügen

Führen Sie die folgenden Schritte aus:

  • Wechseln Sie zum Abschnitt Sources des Event Notifications-Dashboards.
  • Klicken Sie auf Add und wählen Sie eine API-Quelle aus.
  • Geben Sie einen Namen und eine optionale Beschreibung ein und klicken Sie auf Add.

Event Notifications-Ziel erstellen

Klicken Sie in der Event Notifications-Konsole auf Destinations und fügen Sie die folgenden Zieldetails hinzu:

  • Name: Fügen Sie einen Namen für das Ziel hinzu.
  • Description: Fügen Sie eine optionale Beschreibung für das Ziel hinzu.
  • Type: Wählen Sie den Typ " iOS Push Notifications aus der Dropdown-Liste.
  • Wählen Sie einen Zielplan aus: Vorproduktionsziel oder Produktionsziel.
    • Pre-production destination-Wählen Sie dieses Ziel als kostengünstiges Push-Ziel für Ihre Entwicklungs-und Testumgebung aus.
    • Production destination-Nutzen Sie die volle Funktionalität dieses Ziels. Unbegrenzt viele Geräte und ausgehende Nachrichten erlaubt.
  • Aktualisieren Sie die iOS mit den Details basierend auf " Authentication Type und wählen Sie " Environment.
    • Wenn der Zertifikatstyp p8 ist, laden Sie die .p8-Datei hoch und geben Sie KeyID, TeamID und BundleID an.
    • wenn der Zertifikatstyp " p12 ist, laden Sie das p12 hoch und stellen Sie das Zertifikat " password bereit.
  • Klicken Sie auf Add.

Event Notifications-Thema erstellen

Wählen Sie Topics in der Event Notifications-Konsole aus und klicken Sie auf Create. Geben Sie die folgenden Themendetails ein:

  • Name: Geben Sie einen Namen für das Thema ein.
  • Description: Fügen Sie eine optionale Beschreibung für das Thema hinzu.
  • Source: Wählen Sie eine Quelle aus der Dropdown-Liste aus.
  • Event type: Wählen Sie in der Dropdown-Liste den Ereignistyp aus.
  • Event sub type Wählen Sie in der Dropdown-Liste der Ereignisuntertypen den Ereignisuntertyp aus.
  • Severity: Wählen Sie in der Dropdown-Liste den Schweregrad aus.
  • Advanced conditions: Schreiben Sie Ihre eigenen angepassten Bedingungen, die den jsonpath-Spezifikationen entsprechen müssen.

Event Notifications-Subskription erstellen

Klicken Sie in der Event Notifications-Konsole auf Subscriptions. Geben Sie die folgenden Abonnementdetails ein:

  • Klicken Sie auf Click, um den Subskriptionsassistenten anzuzeigen.
  • Vervollständigen Sie die folgenden Abonnementdetails:
    • Subscription name: Name des Abonnements.
    • Subscription description: Fügen Sie eine optionale Beschreibung hinzu.
  • Wählen Sie im Abschnitt Subscribe to a topic ein Thema aus der Dropdown-Liste aus und wählen Sie ein Ziel aus der Dropdown-Liste aus.
  • Destination type: Wählen Sie den Typ unter Destination aus und klicken auf Add.

Event Notifications iOS-SDK einrichten

Das iOS-SDK ermöglicht iOS-Apps den Empfang von Push-Benachrichtigungen. Führen Sie die folgenden Schritte aus, um das Event Notifications iOS SDK zu installieren, das SDK zu initialisieren und sich für Benachrichtigungen für Ihre iOS-App zu registrieren.

Installation

Die aktuelle Version dieses SDK ist: 0.0.1

Um das iOS Event Notifications zu verwenden, definieren Sie eine Abhängigkeit, die die Artefaktkoordinaten (Gruppen-ID, Artefakt-ID und Version) für den Dienst enthält, etwa so:

CocoaPods

use_frameworks!

target 'MyApp' do
   pod 'ENPushDestination', '~> 0.0.1'
end

Carthage

Fügen Sie Folgendes zu Ihrer Cartfile hinzu, um ENPushDestination mithilfe von Carthage zu installieren:

github "IBM/event-notifications-destination-ios-sdk" ~> 0.0.1

Führen Sie dann den folgenden Befehl aus, um die Abhängigkeiten und Frameworks zu erstellen:

carthage update --platform iOS

Swift Package Manager

Fügen Sie der Datei Package.swift Folgendes hinzu, um ENPushDestination als Abhängigkeit anzugeben. Der Paketmanager klont ENPushDestination, wenn Sie Ihr Projekt mit swift build bauen.

dependencies: [
   .package(url: "https://github.com/IBM/event-notifications-destination-ios-sdk", from: "0.0.1")
]

Installation - SDK initialisieren

Führen Sie die folgenden Schritte aus, um iOS-Anwendungen für den Empfang von Benachrichtigungen zu aktivieren.

  1. Fügen Sie die import-Anweisungen in Ihrer Datei .swift hinzu.

    import ENPushDestination
    
  2. SDK für ENPushDestination initialisieren

    let instanceGUID = "<instance_guid>>";
    let destinationID = "<instance_destination_id>";
    let apiKey = "<instance_apikey>";
    
    let enPush = ENPush.sharedInstance
    enPush.setCloudRegion(region: .usSouth)
    enPush.initialize(instanceGUID, destinationID, apiKey)
    
    • region: Region der Event Notifications-Instanz. Beispiel: Region.usSouth.

Für Benachrichtigungen registrieren

Verwenden Sie die API " ENPush.registerDevice(), um das Gerät mit dem iOS im Dienst Event Notifications zu registrieren.

Die folgenden Optionen werden unterstützt:

  • Ohne Benutzer-ID registrieren:

    /**Register iOS devices*/
    enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>") { response, statusCode, error in
       print(response?.id ?? "")
    }
    
  • Registrierung mit Benutzer-ID. Für die auf " userId basierende Meldung akzeptiert die Registrierungsmethode einen weiteren Parameter - " userId.

    /**Register iOS devices*/
    enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>", withUserId: "userId") { response, statusCode, error in
    
       print(response?.id ?? "")
    
    }
    

    Der " userId wird verwendet, um den eindeutigen " userId für die Registrierung für Event Notifications zu übergeben.

Registrierung von Benachrichtigungen aufheben

Verwenden Sie die folgenden Codeschnipsel, um die Registrierung von Event Notifications aufzuheben.

enPush.unregisterDevice { response, statusCode, error in
   /**.....*/
}

Zum Aufheben der Registrierung bei der UserId-basierten Registrierung müssen Sie die Registrierungsmethode aufrufen. Siehe Register without userId option im Abschnitt Für Benachrichtigungen registrieren.

Subskriptionen für Event Notifications-Zieltags

Tags abonnieren

Die API " subscribe abonniert das Gerät für einen bestimmten Tag. Nachdem das Gerät einen bestimmten Tag abonniert hat, kann das Gerät Benachrichtigungen empfangen, die für diesen Tag gesendet werden.

Fügen Sie das folgende Code-Snippet zu Ihrer mobilen iOS-Anwendung hinzu, um eine Liste von Tags zu abonnieren.

// Subscribe to the given tag
enPush.subscribeToTags(tagName: "<tag_name>") { response, statusCode, error in
   /**.....*/
});

Abonnierte Tags abrufen

Die API " retrieveSubscriptionsWithCompletionHandler gibt die Liste der Tags zurück, für die das Gerät abonniert ist. Verwenden Sie die folgenden Code-Snippets in der mobilen Anwendung, um die Abonnementliste abzurufen.

// Get a list of tags that to which the device is subscribed.
enPush.retrieveSubscriptionsWithCompletionHandler { response, statusCode, error in
   /**.....*/
}

Tag-Abonnements stornieren

Die API unsubscribeFromTags entfernt das Geräteabonnement aus den Listentags. Verwenden Sie die folgenden Code-Snippets, damit Ihre Geräte Tag-Abonnements stornieren können.

// unsubscibe from the given tag ,that to which the device is subscribed.
enPush.unsubscribeFromTags(tagName: "<tag_name>") { response, statusCode, error in
   /**.....*/
}

Push-Benachrichtigungen in iOS-Geräten empfangen

Um Push-Benachrichtigungen auf iOS zu erhalten, fügen Sie die folgende Swift in den " appDelegate.swift Ihrer Anwendung ein:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

   //UserInfo dictionary will contain data sent from the server
}

Benachrichtigungsoptionen

Die folgenden Benachrichtigungsoptionen werden unterstützt:

Interaktive Benachrichtigungen

  1. Zum Aktivieren interaktiver Push-Benachrichtigungen müssen die Parameter für Benachrichtigungsaktionen als Teil des Benachrichtigungsobjekts übergeben werden. Im Folgenden sehen Sie einen Beispielcode zum Aktivieren interaktiver Benachrichtigungen:
let actionOne = ENPushNotificationAction(identifierName: "FIRST", buttonTitle: "Accept", isAuthenticationRequired: false, defineActivationMode: .foreground)

let actionTwo = ENPushNotificationAction(identifierName: "SECOND", buttonTitle: "Reject", isAuthenticationRequired: false, defineActivationMode: .destructive)

let category = ENPushNotificationActionCategory(identifierName: "category", buttonActions: [actionOne, actionTwo])

let notificationOptions = ENPushClientOptions()
notificationOptions.setInteractiveNotificationCategories(categoryName: [category])
enPush.initialize(instanceGUID, destinationID, apiKey, notificationOptions)
  1. Implementieren Sie die Callback-Methode in AppDelegate.swift:

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
       switch response.actionIdentifier {
          case "Accept":
          print("Clicked Accept")
          case "Reject":
          print("Clicked Reject")
          default:
       }
       completionHandler()
    }
    

Diese Callback-Methode wird aufgerufen, wenn der Benutzer auf die Aktionsschaltfläche klickt. Die Implementierung dieser Methode muss Aufgaben ausführen, die mit dem angegebenen Bezeichner verbunden sind, und den Block im Parameter completionHandler ausführen.

Angepasste Einheiten-ID für Registrierung hinzufügen

Verwenden Sie zum Senden von DeviceId die Methode setDeviceId der Klasse ENPushClientOptions.

let options = ENPushClientOptions();
options.setDeviceId(deviceId: "YOUR_DEVICE_ID");

Denken Sie daran, die benutzerdefinierte DeviceId ' unique für jedes Gerät beizubehalten.

Rich Media-Benachrichtigungen aktivieren

Rich-Media-Benachrichtigungen werden unter iOS 10 oder höher unterstützt. Implementieren Sie UNNotificationServiceExtension, um Rich Media-Benachrichtigungen zu empfangen. Die Erweiterung fängt die Rich-Media-Benachrichtigung ab und verarbeitet sie.

Fügen Sie in der Methode didReceive () Ihrer Serviceerweiterung den folgenden Code hinzu, um den Rich-Push-Benachrichtigungsinhalt abzurufen.

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
   self.contentHandler = contentHandler
   bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
   ENPushRichPushNotificationOptions.didReceive(request, withContentHandler: contentHandler)
}

Benachrichtigungen an das iOS-Gerät senden

Verwenden Sie API zum Senden von Benachrichtigungen, um die Push-Benachrichtigung für das iOS-Gerät zu senden. Sie können das Knoten- oder Go-Administrator-SDK verwenden, anstatt die API direkt aufzurufen.

caption-side=bottom"

caption-side=bottom"
Benachrichtigungen