Handhabung von Push-Benachrichtigungen in iOS
improve this page | report issueÜbersicht
Sie können die MobileFirst-API für Benachrichtigungen verwenden, um Geräte zu registrieren und Geräteregistrierungen aufzuheben und um Tags zu abonnieren und Tagabonnements zu beenden. In diesem Lernprogramm werden Sie lernen, wie Push-Benachrichtigungen in iOS-Anwendungen mit Swift gehandhabt werden.
Informationen zu Benachrichtigungen im Hintergrund und interaktiven Benachrichtigungen finden Sie in folgenden Abschnitten:
Voraussetzungen:
- Stellen Sie sicher, dass Sie die folgenden Lernprogramme durchgearbeitet haben:
- MobileFirst Server wird lokal oder fern ausgeführt.
- Die MobileFirst CLI ist auf der Entwicklerworkstation installiert.
Fahren Sie mit folgenden Abschnitten fort:
Benachrichtigungskonfiguration
Erstellen Sie ein Xcode-Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn das native MobileFirst-iOS-SDK noch nicht im Projekt enthalten ist, folgen Sie den Anweisungen im Lernprogramm SDK der Mobile Foundation zu iOS-Anwendungen hinzufügen.
Push-SDK hinzufügen
-
Öffnen Sie die vorhandene podfile des Projekts und fügen Sie die folgenden Zeilen hinzu:
use_frameworks! platform :ios, 8.0 target "Xcode-project-target" do pod 'IBMMobileFirstPlatformFoundation' pod 'IBMMobileFirstPlatformFoundationPush' end post_install do |installer| workDir = Dir.pwd installer.pods_project.targets.each do |target| debugXcconfigFilename = "#{workDir}/Pods/Target Support Files/#{target}/#{target}.debug.xcconfig" xcconfig = File.read(debugXcconfigFilename) newXcconfig = xcconfig.gsub(/HEADER_SEARCH_PATHS = .*/, "HEADER_SEARCH_PATHS = ") File.open(debugXcconfigFilename, "w") { |file| file << newXcconfig } releaseXcconfigFilename = "#{workDir}/Pods/Target Support Files/#{target}/#{target}.release.xcconfig" xcconfig = File.read(releaseXcconfigFilename) newXcconfig = xcconfig.gsub(/HEADER_SEARCH_PATHS = .*/, "HEADER_SEARCH_PATHS = ") File.open(releaseXcconfigFilename, "w") { |file| file << newXcconfig } end end
- Ersetzen Sie Xcode-project-target durch den Namen Ihres Xcode-Projektziels.
- Speichern Sie die podfile und schließen Sie sie.
- Navigieren Sie in einem Befehlszeilenfenster zum Stammverzeichnis des Projekts.
- Führen Sie den Befehl
pod install
aus. - Öffnen Sie das Projekt über die Datei .xcworkspace.
API für Benachrichtigungen
MFPPush-Instanz
Alle API-Aufrufe müssen für eine Instanz von MFPPush
ausgeführt werden. Zu diesem Zweck können Sie eine Variable (var
) in einem Ansichtencontroller erstellen, z. B. var push = MFPPush.sharedInstance();
, und dann im gesamten Ansichtencontroller push.methodName()
aufrufen.
Alternativ dazu können Sie MFPPush.sharedInstance().methodName()
für jede Instanz aufrufen, in der Sie auf die Push-API-Methoden zugreifen müssen.
Abfrage-Handler
Wenn der Bereich push.mobileclient
einer Sicherheitsüberprüfung zugeordnet ist,
müssen Sie sicherstellen, dass passende Abfrage-Handler registriert sind, bevor Push-APIs verwendet werden.
Weitere Informationen zu Abfrage-Handlern enthält das Lernprogramm Berechtigungsnachweise validieren.
Clientseite
Swift-Methoden | Beschreibung |
---|---|
initialize() |
Initialisiert MFPPush für den angegebenen Kontext |
isPushSupported() |
Unterstützt das Gerät Push-Benachrichtigungen? |
registerDevice(completionHandler: ((WLResponse!, NSError!) -> Void)!) |
Registriert das Gerät beim Push-Benachrichtigungsservice |
sendDeviceToken(deviceToken: NSData!) |
Sendet das Gerätetoken an den Server |
getTags(completionHandler: ((WLResponse!, NSError!) -> Void)!) |
Ruft die verfügbaren Tags einer Instanz des Push-Benachrichtigungsservice ab |
subscribe(tagsArray: [AnyObject], completionHandler: ((WLResponse!, NSError!) -> Void)!) |
Richtet das Geräteabonnement für die angegebenen Tags ein |
getSubscriptions(completionHandler: ((WLResponse!, NSError!) -> Void)!) |
Ruft die derzeit vom Gerät abonnierten Tags ab |
unsubscribe(tagsArray: [AnyObject], completionHandler: ((WLResponse!, NSError!) -> Void)!) |
Beendet das Abonnement bestimmter Tags |
unregisterDevice(completionHandler: ((WLResponse!, NSError!) -> Void)!) |
Hebt die Registrierung des Geräts beim Push-Benachrichtigungsservice auf |
Initialisierung
Die Initialisierung ist erforderlich, damit die Clientanwendung eine Verbindung zum Service MFPPush herstellen kann.
- Die Methode
initialize
muss aufgerufen werden, bevor andere MFPPush-APIs verwendet werden. - Die Callback-Funktion wird für die Handhabung empfangener Push-Benachrichtigungen registriert.
MFPPush.sharedInstance().initialize();
Wird Push unterstützt?
Es wird überprüft, ob das Gerät Push-Benachrichtigungen unterstützt.
let isPushSupported: Bool = MFPPush.sharedInstance().isPushSupported()
if isPushSupported {
// Push wird unterstützt.
} else {
// Push wird nicht unterstützt.
}
Gerät registrieren und Gerätetoken senden
Registrieren Sie das Gerät beim Push-Benachrichtigungsservice.
MFPPush.sharedInstance().registerDevice(nil) { (response, error) -> Void in
if error == nil {
self.enableButtons()
self.showAlert("Registered successfully")
print(response?.description ?? "")
} else {
self.showAlert("Registrations failed. Error \(error?.localizedDescription)")
print(error?.localizedDescription ?? "")
}
}
MFPPush.sharedInstance().sendDeviceToken(deviceToken)
Hinweis: Dieser Aufruf wird in der Regel im AppDelegate in der Methode
didRegisterForRemoteNotificationsWithDeviceToken
ausgeführt.
Tags abrufen
Rufen Sie alle verfügbaren Tags vom Push-Benachrichtigungsservice ab.
MFPPush.sharedInstance().getTags { (response, error) -> Void in
if error == nil {
print("The response is: \(response)")
print("The response text is \(response?.responseText)")
if response?.availableTags().isEmpty == true {
self.tagsArray = []
self.showAlert("There are no available tags")
} else {
self.tagsArray = response!.availableTags() as! [String]
self.showAlert(String(describing: self.tagsArray))
print("Tags response: \(response)")
}
} else {
self.showAlert("Error \(error?.localizedDescription)")
print("Error \(error?.localizedDescription)")
}
}
Abonnement
Abonnieren Sie die gewünschten Tags.
var tagsArray: [String] = ["Tag 1", "Tag 2"]
MFPPush.sharedInstance().subscribe(self.tagsArray) { (response, error) -> Void in
if error == nil {
self.showAlert("Subscribed successfully")
print("Subscribed successfully response: \(response)")
} else {
self.showAlert("Failed to subscribe")
print("Error \(error?.localizedDescription)")
}
}
Abonnements abrufen
Rufen Sie die derzeit vom Gerät abonnierten Tags ab.
MFPPush.sharedInstance().getSubscriptions { (response, error) -> Void in
if error == nil {
var tags = [String]()
let json = (response?.responseJSON)! as [AnyHashable: Any]
let subscriptions = json["subscriptions"] as? [[String: AnyObject]]
for tag in subscriptions! {
if let tagName = tag["tagName"] as? String {
print("tagName: \(tagName)")
tags.append(tagName)
}
}
self.showAlert(String(describing: tags))
} else {
self.showAlert("Error \(error?.localizedDescription)")
print("Error \(error?.localizedDescription)")
}
}
Abonnement beenden
Beenden Sie das Tagabonnement.
var tags: [String] = {"Tag 1", "Tag 2"};
// Tagabonnement beenden
MFPPush.sharedInstance().unsubscribe(self.tagsArray) { (response, error) -> Void in
if error == nil {
self.showAlert("Unsubscribed successfully")
print(String(describing: response?.description))
} else {
self.showAlert("Error \(error?.localizedDescription)")
print("Error \(error?.localizedDescription)")
}
}
Registrierung aufheben
Sie können die Registrierung des Geräts bei der Instanz des Push-Benachrichtigungsservice aufheben.
MFPPush.sharedInstance().unregisterDevice { (response, error) -> Void in
if error == nil {
// Schaltflächen inaktivieren
self.disableButtons()
self.showAlert("Unregistered successfully")
print("Subscribed successfully response: \(response)")
} else {
self.showAlert("Error \(error?.localizedDescription)")
print("Error \(error?.localizedDescription)")
}
}
Handhabung von Push-Benachrichtigungen
Push-Benachrichtigungen werden direkt vom nativen iOS-Framework behandelt. Welche Methoden vom iOS-Framework aufgerufen werden, richtet sich nach Ihrem Anwendungslebenszyklus.
Wenn beispielsweise eine einfache Benachrichtigung empfangen wird, währen die Anwendung aktiv ist, wird didReceiveRemoteNotification
von AppDelegate ausgelöst.
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
print("Received Notification in didReceiveRemoteNotification \(userInfo)")
// Alerttext anzeigen
if let notification = userInfo["aps"] as? NSDictionary,
let alert = notification["alert"] as? NSDictionary,
let body = alert["body"] as? String {
showAlert(body)
}
}
Weitere Informationen zur Handhabung von Benachrichtigungen in iOS finden Sie in der Apple-Dokumentation.
Beispielanwendung
Klicken Sie hier, um das Xcode-Projekt herunterzuladen.
Verwendung des Beispiels
Anweisungen finden Sie in der Datei README.md zum Beispiel.
▲Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.