Push-Benachrichtigungen in Ihrer Anwendung iOS einrichten

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 2 Minuten Lesedauer
  • 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 NowPushService registrieren. 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(())
    }