NowData-Framework: IOS

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 3 Minuten Lesedauer
  • Die Now-Daten Framework enthält Methoden, die die Instanziierung von NowData-Services ermöglichen, z. B. NowGraphQLService , NowTableService , NowAPIService (Für anwenderdefinierte APIs), und NowAttachmentService .

    NowData – makeApiService(instanceUrl: URL, Pfad: Zeichenfolge, Abschluss: @Escaping ((Result<NowApiService, NowServiceError>) -> ungültig))

    Erstellt eine Instanz von NowApiService und ruft nach Abschluss den angegebenen Abschlusshandler auf.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    instanceUrl URL URL von ServiceNow Instanz, auf deren REST-APIs der Service zugreifen soll.
    path Zeichenfolge API-Pfad.

    Beispiel: Wenn der API-Aufruf lautet https://xxx.service-now.com/api/now/sg/incident , Der Pfad ist /api/now/sg/Incident .

    Abschluss @Escaping ((Ergebnis​< NowApiService , Now-​Servicefehler​>) -> Ungültig) Abschlusshandler, der mit aufgerufen wird Result<NowApiService, NowServiceError> Enthält entweder einen initialisierten NowApiService Instanz oder ein NowServiceError Gibt an, warum die Initialisierung fehlgeschlagen ist.
    Tabelle : 2. Rückgaben
    Typ Beschreibung
    Keine

    Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.

    let path = "api/now/sg"
    let apiPublisher = apiService(for: path)
    
    func apiService(for path: String) -> AnyPublisher<NowAPIService, ConfigurationError> {
      guard let instanceURL else {
        return Fail(error: ConfigurationError.invalidInstanceURL)
        .eraseToAnyPublisher()
      }
      return Future { promise in
        NowData.makeApiService(instanceUrl: instanceURL, path: path) { (result) in
          promise(result.mapError { .sdkError($0) })
        }
      }
      .eraseToAnyPublisher()
    }

    NowData – makeAttachmentService(instanceUrl: URL, Abschluss: @Escaping ((Result<NowAttachmentService, NowServiceError>) -> ungültig))

    Erstellt eine Instanz von NowAttachmentService und ruft nach Abschluss den angegebenen Abschlusshandler auf.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    instanceUrl URL URL von ServiceNow Instanz, auf deren Anhänge der Service zugreifen soll.
    Abschluss @Escaping ((Ergebnis​< NowAttachmentService , Now-​Servicefehler​>) -> Ungültig) Abschlusshandler, der mit aufgerufen wird Result<NowAttachmentService, NowServiceError> Enthält entweder einen initialisierten NowAttachmentService Instanz oder ein NowServiceError Gibt an, warum die Initialisierung fehlgeschlagen ist.
    Tabelle : 4. Rückgaben
    Typ Beschreibung
    Keine

    Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.

    ….
    guard 
      let jwtUrl = URL(string: "http://13.57.38.237:8080"),
      let instanceUrl = URL(string: "https://mobilecoresdk.service-now.com") else {
        return
      }
    
    // AuthorizationProvider – struct conforming to NowSDKAuthorizationProviding protocol
    let authorizationProvider = AuthorizationProvider(userEmail: "sdk@servicenow.com", jwtProviderUrl: jwtUrl, clientId: "deb8756b452d201039231ca568f26511")
            
    // PermissionProvider – class conforming to DevicePermissionDelegate protocol
    let permissionProvider = PermissionProvider()
    let config = NowSDKConfiguration(authorizationProvider: authorizationProvider, permissionDelegate: permissionProvider, logLevel: .debug)
    	
    do {
      try NowSDK.configure(with: config)
      initializeAttachmentService (with: instanceURL)
    } catch {
      // Return ConfigurationError.sdkError(error)
    }
    …..
    
    func initializeAttachmentService(instanceUrl: instanceURL) { result in
      switch result {
        case .success(let service)
          self?.attachmentService = service
        case .failure(let error)
          debug.print(“Creating Attachment service failed with error: \(error.localizedDescription)”)
          self?.attachmentService = nil
      }
    }
    

    NowData – makeGraphQLService(instanceUrl: URL, Abschluss: @Escaping ((Result<NowGraphQLService, NowServiceError>) -> ungültig))

    Erstellt eine Instanz von NowGraphQLService und ruft nach Abschluss den angegebenen Abschlusshandler auf.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    instanceUrl URL URL von ServiceNow Instanz, die GraphQL-Services bereitstellt.
    Abschluss @Escaping ((Ergebnis​< NowGraphQLService , Now-​Servicefehler​>) -> Ungültig) Abschlusshandler, der mit aufgerufen wird Result<NowGraphQLService, NowServiceError> Enthält entweder einen initialisierten NowGraphQLService Instanz oder ein NowServiceError Gibt an, warum die Initialisierung fehlgeschlagen ist.
    Tabelle : 6. Rückgaben
    Typ Beschreibung
    Keine

    func initializeGraphQLService(instanceUrl: URL) {
      makeGraphQLService(instanceUrl: instanceUrl) { [weak self] result in
        switch result {
        case .success(let service):
          self?.graphQLService = service
        case .failure(let error):
          debugPrint("Creating GraphQL service failed with error: \(error.localizedDescription)")
          self?.graphQLService = nil
        }
      }
    }

    NowData – makeTableService(instanceUrl: URL, Abschluss: @Escaping ((Result<NowTableService, NowServiceError>) -> ungültig))

    Erstellt eine Instanz von NowTableService und ruft nach Abschluss den angegebenen Abschlusshandler auf.

    Tabelle : 7. Parameter
    Name Typ Beschreibung
    instanceUrl URL URL von ServiceNow Instanz, auf deren Tabellen der Service zugreifen soll.
    Abschluss @Escaping ((Ergebnis​< NowTableService , Now-​Servicefehler​>) -> Ungültig) Abschlusshandler, der mit aufgerufen wird Result<NowTableService, NowServiceError> Enthält entweder einen initialisierten NowTableService Instanz oder ein NowServiceError Gibt an, warum die Initialisierung fehlgeschlagen ist.
    Tabelle : 8. Rückgaben
    Typ Beschreibung
    Keine

    Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.

    func initializeTableService(for instanceUrl: URL) {
      makeTableService(instanceUrl: instanceUrl) { [weak self] result in
        guard let self = self else { return }
                
        switch result {
          case .success(let tableService):
            self.tableService = tableService
            // Create a Paginator that will iterate over pages of customer support cases. The Paginator's response type will be
            // inferred from the Paginator's type definition (e.g. `Paginator<[CustomerServiceCase]>`).
            self.paginator = tableService.paginator(from: Self.tableName, configuration: self.fetchConfiguration)
            // Subscribe to the Paginator's publisher so we will be able to receive paged results.
            self.subscribeToPaginatorPublisher()
            // As we are now ready to start fetching data, inform the view controller.
            self.onReady(self)
          case .failure(let error):
            debugPrint("Creating table service failed with error: \(error.localizedDescription)")
            self.tableService = nil
            self.paginator = nil
        }
      }
    }