Zeigen Sie Webseiten an, die in Ihrer Instanz ServiceNow gehostet werden
Sie können Webseiten, die in Ihrer Instanz ServiceNow gehostet werden, in Ihrer nativen iOS-Anwendung anzeigen.
Mobile SDK ermöglicht eine nahtlose Abwicklung der erforderlichen Authentifizierung und Sitzungsverwaltung, während die NowWebService- API die erforderlichen Funktionen für die Verarbeitung von Seiten bereitstellt, die sich in Ihrer Instanz ServiceNow von befinden. Diese Webseiten weisen alle dynamischen Interaktionen auf, die auf der Plattform ServiceNow möglich sind.
Wenn die Webansicht zum Laden einer Webseite aufgefordert wird, die auf einer Instanz ServiceNow gehostet wird, erstellt sie eine HTTP-Anforderung mit dem entsprechenden Bearer-Header, der das von NowSDK bereitgestellte OAuth-Zugriffstoken enthält. Wenn die Instanz diese Anforderung erhält, startet sie eine neue Benutzersitzung und gibt Cookies zurück, die sich auf diese Sitzung beziehen. Wenn der Benutzer mit den Webseiten in der Webansicht interagiert, verwendet die Instanz 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 Benutzer länger als die Zeitüberschreitungsdauer an nicht mehr mit der Website interagiert. Wenn der Benutzer 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 mit dem Token eine HTTP-Anforderung (mit Bearer-Header) für die letzte bekannte geladene Seite erstellt.
Um diese Funktionen zu verwenden, müssen Sie zuerst eine Instanz des NowWebServiceerstellen. Dazu müssen Sie die Methode makeWebService() aufrufen und die URL zu Ihrer Instanz ServiceNow sowie ein bereits initialisiertes NowSDKbereitstellen. Außerdem müssen Sie NowWeb in Ihre Anwendung importiert haben. Sie sollten einen Verweis auf den NowWebService solange speichern, wie Sie den NowWeb -Service verwenden.
Im Folgenden finden Sie ein Beispiel für die Erstellung eines NowWebService-Objekts mit async/wait:
do {
let service = try await NowWeb.makeWebService(instanceUrl: instanceUrl)
self.webService = service
} catch {
debugPrint("Web Service creation failed with error: \(error.localizedDescription)")
}Im Folgenden finden Sie ein Beispiel für die Erstellung eines NowWebService-Objekts mit einem Abschluss-Handler:
import Combine
import NowWeb
import UIKit
...
public func makeWebService(instanceUrl: URL,
completion: @escaping ((Result<NowWeb.NowWebService, NowSDK.NowServiceError>) -> Void))
Laden Sie Seiten vor, um die Ladezeit von NowWeb zu verbessern
Sie können Seiten mit zwischenspeicherbaren Ressourcen im Hintergrund vorab laden, um die anfänglichen Ladezeiten von NowWeb zu verkürzen. Das folgende Beispiel zeigt, wie Sie mit der Funktion webService.preloadWebCache() angegebene Seiten vorab laden.
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 zum Anzeigen von Webinhalten
Sobald Sie eine Instanz von NowWebService instanziiert haben, können Sie damit Ansichten erstellen, um Webseiten anzuzeigen, die in Ihrer Instanz ServiceNow gehostet werden.
Das folgende Beispiel zeigt, wie eine NowWebViewController -Ansicht erstellt wird:
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 ist url die URL der ersten Seite, die in der Ansicht geladen werden soll. Diese URL muss auf eine Seite verweisen, die auf der angegebenen Instanz ServiceNow gehostet wird. Relative URLs funktionieren auch und sind relativ zu der Instanz ServiceNow, auf die sich der NowWebService bezieht.
Nach der Erstellung können Sie den NowWebViewController auf einen vorhandenen Navigationsstapel übertragen. Die Startseite wird erst geladen, wenn Sie die Methode loadPage() aufrufen.