Zeigen Sie Webseiten an, die auf Ihrem gehostet werden ServiceNow Instanz
Sie können Webseiten anzeigen, die in gehostet werden ServiceNow Instanz in Ihrer nativen iOS-Anwendung.
Die Mobile SDK Bietet eine nahtlose Verarbeitung der erforderlichen Authentifizierung und Sitzungsverwaltung, während NowWebservice Die API bietet die Funktionalität, die zum behandeln von Seiten auf Ihrem erforderlich ist ServiceNow Instanz. Diese Webseiten verfügen über alle dynamischen Interaktionen, die auf der möglich sind ServiceNow Plattform.
Wenn die Webansicht angefordert wird, eine Webseite zu laden, die auf einem gehostet wird ServiceNow Wird eine HTTP-Anforderung mit dem entsprechenden Bearer-Header erstellt, der das vom NowSDK bereitgestellte OAuth-Zugriffstoken enthält. Wenn die Instanz diese Anforderung erhält, startet sie eine neue Anwendersitzung und gibt Cookies im Zusammenhang mit dieser Sitzung zurück. Während der Anwender mit den Webseiten in der Webansicht interagiert, verwendet die Instanz die Cookies, um zu überprüfen, ob die Sitzung noch gültig ist. Zu diesem Zeitpunkt ist der Bearer-Header nicht mehr relevant, nur die Cookies werden für die Sitzungsvalidierung verwendet. Die Websitzung läuft ab, wenn der Anwender die Interaktion mit der Website länger als die Zeitüberschreitung beendet. Wenn der Anwender nach Ablauf der Sitzung versucht, mit der Webseite zu interagieren, wird er automatisch zur Anmeldeseite weitergeleitet. Der NowWebViewController erkennt die Umleitung und versucht, eine neue Websitzung zu starten, indem er ein aktualisiertes Zugriffstoken vom NowSDK anfordert und das Token verwendet, um eine HTTP-Anforderung (mit Bearer-Header) für die zuletzt bekannte geladene Seite zu erstellen.
Um diese Funktionen zu verwenden, müssen Sie zuerst eine Instanz von erstellen NowWebservice . Dazu müssen Sie anrufen MakeWebservice() Methode und geben Sie die URL an ServiceNow Instanz und bereits initialisiert Now-SDK . Außerdem müssen Sie importiert haben NowWeb In Ihrer Anwendung. Sie sollten einen Verweis auf enthalten NowWebservice Solange Sie verwenden NowWeb Service.
Das folgende Beispiel zeigt, wie Sie ein NowWebService-Objekt mit asynchron/warten erstellen:
do {
let service = try await NowWeb.makeWebService(instanceUrl: instanceUrl)
self.webService = service
} catch {
debugPrint("Web Service creation failed with error: \(error.localizedDescription)")
}Das folgende Beispiel zeigt, wie ein NowWebService-Objekt mit einem Abschlusshandler erstellt wird:
import Combine
import NowWeb
import UIKit
...
public func makeWebService(instanceUrl: URL,
completion: @escaping ((Result<NowWeb.NowWebService, NowSDK.NowServiceError>) -> Void))
Laden Sie Seiten vorab, um die NowWeb-Ladezeit zu verbessern
Sie können Seiten mit zwischenspeicherbaren Ressourcen im Hintergrund vorladen, um die anfängliche Verbesserung zu verbessern NowWeb Ladezeiten. Das folgende Beispiel zeigt die Verwendung von Webservice.preloadWebCache() Funktion zum Vorladen der angegebenen Seiten.
private func preloadURLs(urls: [URL]) {
guard let webService = webService else {
debugPrint("Web service not initialized")
return
}
do {
try webService.preloadWebCache(urls: urls) {
debugPrint("URLs did complete preloading")
}
} catch {
debugPrint(error.localizedDescription)
}
}
Erstellen Sie Ansichten, um Webinhalte anzuzeigen
Sobald Sie eine Instanz von NowWebService instanziiert haben, können Sie sie verwenden, um Ansichten zum Anzeigen von Webseiten zu erstellen, die auf Ihrem gehostet werden ServiceNow Instanz.
Das folgende Beispiel zeigt, wie ein erstellt wird NowWebViewController Ansicht:
let result = webService.makeWebViewController(for: url,
delegate: self, theme: MyWebTheme(nowUITheme: MyUITheme()))
switch result {
case .success(let viewController):
return viewController
case .failure(let error):
debugPrint("Web view creation failed with error: \(error.localizedDescription)")
}In diesem Beispiel urlIst die URL der anfänglichen Seite, die in der Ansicht geladen werden soll. Diese URL muss auf eine Seite verweisen, die auf dem angegebenen gehostet wird ServiceNow Instanz. Relative URLs funktionieren auch und sind relativ zu ServiceNow Instanz, die vom NowWebService angestrebt wird.
Nach der Erstellung können Sie den NowWebViewController auf einen vorhandenen Navigations-Stapel verschieben. Die Anfangsseite wird erst geladen, wenn Sie aufrufen LoadPage() Methode.