Push-Benachrichtigungen in Ihrer Anwendung iOS einrichten
Zusätzlich zu den Aufgaben, die Sie in der Instanz ServiceNow ausführen müssen, um eine Push-Benachrichtigung zu konfigurieren, müssen Sie auch spezifischen Code in Ihre Anwendung iOS einfügen.
Erstellen Sie den NowSDK NowPushService
Als Erstes müssen Sie in Ihrer Anwendung einen NowPushServiceerstellen. Das NowPush SDK bietet eine Factory-Funktion zum Erstellen dieses Service. Fügen Sie Code, der dem folgenden Codeausschnitt ähnelt, früh in Ihrem Hauptcodetext hinzu.
func setup(with instanceURL: URL) -> AnyPublisher<NowService, ConfigurationError> {
NowPush.makePushService(instanceUrl: instanceURL)
.mapError { .sdkError($0) }
.map { $0 as NowService }
.eraseToAnyPublisher()
}
Weitere Informationen zur Methode NowPush.machenPushService() finden Sie unter NowPush-API – iOS.
Registrieren Sie das Push-Token
Apple stellt ein eindeutiges Push-Benachrichtigungstoken bereit, das das Gerät und die Anwendung identifiziert, die Push-Benachrichtigungen erhalten sollen. Damit eine Anwendung eine Push-Benachrichtigung erhält, müssen Sie dieses Token bei NowPushServiceregistrieren. Fügen Sie eine Funktion ähnlich dem folgenden Codefragment in Ihrer Anwendung iOS hinzu. Diese Anwendung muss bei Ihrer Instanz ServiceNow registriert sein.
func registerForPushNotifications(deviceToken: Data) {
pushService.registerPushToken(deviceToken,
pushAppName: "TestPushApp", // Modify this to be your iOS application name
environment: environment) { [weak self] result in
guard let self = self else { return }
switch result {
case .success:
UserDefaults.standard.set(true, forKey: "pushNotificationsRegistered")
self.pushRegistrationState = .registrationSuccess
case .failure:
UserDefaults.standard.set(false, forKey: "pushNotificationsRegistered")
self.pushRegistrationState = .registrationFailed
}
}
}
Weitere Informationen zur Methode registrierenPushToken() finden Sie unter NowPushService - registrierenPushToken(_token: Daten, pushAppName: Zeichenfolge, Umgebung: NowPushEnvironment, Abschluss: @escaping (Ergebnis<Data, NowPushError> ) -> ungültig).
Heben Sie die Registrierung des Push-Tokens auf
Sie müssen die Registrierung eines Push-Tokens aufheben, wenn der Benutzer Ihre Anwendung beendet, z. B. wenn er sich abmeldet. Verwenden Sie Code ähnlich dem folgenden Codeausschnitt, um die Registrierung eines Push-Tokens aufzuheben. Stellen Sie sicher, dass Sie pushAppName in den Namen Ihrer Anwendung iOS ändern.
func unregisterFromPushNotifications(deviceToken: Data) {
pushService.unregisterPushToken(deviceToken, pushAppName: "TestPushApp", environment: environment) { [weak self] result in
guard let self = self else { return }
switch result {
case .success:
UserDefaults.standard.set(false, forKey: "pushNotificationsRegistered")
self.pushRegistrationState = .unregisterSuccess
case .failure:
self.pushRegistrationState = .unregisterFailed
}
}
}
Weitere Informationen zur Methode unregisterPushToken() finden Sie unter NowPushService - unregisterPushToken(_token: Daten, pushAppName: Zeichenfolge, Umgebung: NowPushEnvironment, Abschluss: @escaping (Ergebnis<Data, NowPushError> ) -> ungültig).
Analysieren Sie die Push-Nutzlast
Sie müssen die Nutzlasten der Push-Benachrichtigung in einem NowPushPayload -Objekt analysieren, um Informationen zu sammeln und die Daten in anderen Teilen der Anwendung zu verwenden. Derzeit ist dies nur für Virtual Agent-Push-Benachrichtigungen verfügbar. Verwenden Sie Code wie den folgenden
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
guard let pushService = pushService else {
completionHandler()
return
}
let userInfo = response.notification.request.content.userInfo
_ = pushService.payloadFromUserInfo(userInfo)
.flatMap(handleNowPushPayload)
}
func handleNowPushPayload(_ payload: NowPushPayload) -> Result<Void, NowPushError> {
guard payload is NowPushVirtualAgent else {
return .failure(NowPushError.unsupportedData)
}
launchVirtualAgent()
return .success(())
}