Einrichten von Push-Benachrichtigungen in Ihrer Anwendung iOS .

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 2 Minuten Lesedauer
  • Zusätzlich zu den Aufgaben, die Sie in Ihrer Instanz ServiceNow ausführen müssen, um eine Push-Benachrichtigung zu konfigurieren, müssen Sie auch bestimmten Code in Ihre Anwendung iOS einfügen.

    Erstellen Sie den NowSDK NowPushService

    Eines der ersten Dinge, die in Ihrer Anwendung erledigt werden müssen, ist die Erstellung eines NowPushService. Das NowPush- SDK bietet eine Werksfunktion zum Erstellen dieses Service. Fügen Sie Code ähnlich dem folgenden Code-Snippet früh in Ihrem Hauptcode-Text hinzu.

    func setup(with instanceURL: URL) -> AnyPublisher<NowService, ConfigurationError> {
      NowPush.makePushService(instanceUrl: instanceURL)
        .mapError { .sdkError($0) }
        .map { $0 as NowService }
        .eraseToAnyPublisher()
    }

    Weitere Informationen zur NowPush.makePushService() -Methode 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 für den Empfang von Push-Benachrichtigungen identifiziert. Damit eine Anwendung Push-Benachrichtigungen erhalten kann, müssen Sie dieses Token mit NowPushService registrieren. Fügen Sie in Ihrer iOS -Anwendung eine Funktion ähnlich dem folgenden Code-Fragment hinzu. Diese Anwendung muss bei Ihrer ServiceNow -Instanz 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 registerPushToken() finden Sie unter NowPushService – registerPushToken(_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 verlässt, z. B. wenn sich der Benutzer abmeldet. Verwenden Sie Code ähnlich dem folgenden Code-Fragment, 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: Data, pushAppName: String, Environment: NowPushEnvironment, Abschluss: @escaping (Result<Data, NowPushError> ) -> ungültig).

    Analysieren Sie die Push-Nutzlast

    Sie müssen Nutzlasten von Push-Benachrichtigungen in ein 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 ähnlich dem 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(())
    }