Zeigen Sie Webseiten an, die in Ihrer Instanz ServiceNow gehostet werden
Sie können Webseiten, die in Ihrer ServiceNow -Instanz gehostet werden, in Ihrer nativen iOS-Anwendung anzeigen.
Mobile SDK bietet eine nahtlose Verarbeitung der erforderlichen Authentifizierung und Sitzungsverwaltung, während die NowWebService- API die erforderliche Funktionalität für die Verarbeitung von Seiten bereitstellt, die sich in Ihrer ServiceNow -Instanz befinden. Diese Webseiten weisen alle dynamischen Interaktionen auf, die auf der Plattform ServiceNow möglich sind.
Wenn die Webansicht angefordert wird, eine Webseite zu laden, die auf einer ServiceNow -Instanz gehostet wird, 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 Benutzersitzung und gibt Cookies zurück, die sich auf diese Sitzung beziehen. Während der Benutzer 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 Benutzer länger als die Zeitüberschreitungsperiode 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. NowWebViewController erkennt die Umleitung und versucht, eine neue Websitzung zu starten, indem ein aktualisiertes Zugriffstoken vom NowSDK angefordert und mit dem Token eine HTTP-Anforderung (mit Bearer-Header) für die letzte bekannte geladene Seite erstellt wird.
Um diese Funktionen zu verwenden, müssen Sie zuerst eine Instanz von NowWebService erstellen. Dazu müssen Sie die Methode makeWebService() aufrufen und die URL zu Ihrer ServiceNow -Instanz und einem bereits initialisierten NowSDK angeben. Darüber hinaus müssen Sie NowWeb in Ihre -Anwendung importiert haben. Sie sollten einen Verweis auf NowWebService aufbewahren, solange Sie den NowWeb -Service verwenden.
Das Folgende zeigt ein Beispiel für die Erstellung eines NowWebService-Objekts mit async/await:
do {
let service = try await NowWeb.makeWebService(instanceUrl: instanceUrl)
self.webService = service
} catch {
debugPrint("Web Service creation failed with error: \(error.localizedDescription)")
}Das Folgende zeigt 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 vorab, um die NowWeb-Ladezeit zu verbessern
Sie können Seiten mit zwischenspeicherbaren Ressourcen im Hintergrund vorab laden, um die anfänglichen NowWeb -Ladezeiten zu verbessern. Das folgende Beispiel zeigt, wie die Funktion webService.preloadWebCache() verwendet wird, um angegebene Seiten vorab zu 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, um Webinhalte anzuzeigen
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 zur Instanz ServiceNow, auf die der NowWebService abzielt.
Nach der Erstellung können Sie NowWebViewController auf einen vorhandenen Navigationsstapel verschieben. Die Startseite wird erst geladen, wenn Sie die Methode loadPage() aufrufen.