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