Afficher les pages Web hébergées sur votre ServiceNow instance
Vous pouvez afficher les pages Web hébergées au sein de votre ServiceNow instance dans votre application iOS native.
La Mobile SDK solution fournit une gestion transparente de l’authentification requise et de la gestion des sessions, tandis que l’API NowWebService fournit les fonctionnalités requises pour gérer les pages résidant sur votre ServiceNow instance. Ces pages web ont toutes les interactions dynamiques qui sont possibles sur la ServiceNow plateforme.
Lorsque l’affichage Web est invité à charger une page Web hébergée sur une ServiceNow instance, il crée une demande HTTP avec l’en-tête de support approprié contenant le jeton d’accès OAuth fourni par le NowSDK. Lorsque l’instance reçoit cette demande, elle démarre une nouvelle session utilisateur et renvoie les cookies associés à cette session. Au fur et à mesure que l’utilisateur interagit avec les pages Web de la vue Web, l’instance utilise les cookies pour valider que la session est toujours valide. À ce stade, l’en-tête du support n’est plus pertinent, seuls les cookies sont utilisés pour la validation de session. La session Web expire si l’utilisateur cesse d’interagir avec le site Web pendant plus longtemps que le délai d’expiration. Après l’expiration de la session, si l’utilisateur tente d’interagir avec la page Web, il est automatiquement redirigé vers la page de connexion. NowWebViewController détecte la redirection et tente de démarrer une nouvelle session Web en demandant un jeton d’accès actualisé auprès du NowSDK et en utilisant le jeton pour créer une demande HTTP (avec un en-tête de support) pour la dernière page chargée connue.
Pour utiliser ces fonctionnalités, vous devez d’abord créer une instance de NowWebService. Pour ce faire, vous devez appeler la méthode makeWebService() et fournir l’URL à votre ServiceNow instance ainsi qu’un NowSDK déjà initialisé. En outre, vous devez avoir importé NowWeb dans votre application. Vous devez conserver une référence au NowWebService aussi longtemps que vous utilisez le service NowWeb .
Voici un exemple de création d’un objet NowWebService à l’aide de async/await :
do {
let service = try await NowWeb.makeWebService(instanceUrl: instanceUrl)
self.webService = service
} catch {
debugPrint("Web Service creation failed with error: \(error.localizedDescription)")
}Voici un exemple de création d’un objet NowWebService à l’aide d’un gestionnaire de complétion :
import Combine
import NowWeb
import UIKit
...
public func makeWebService(instanceUrl: URL,
completion: @escaping ((Result<NowWeb.NowWebService, NowSDK.NowServiceError>) -> Void))
Précharger les pages pour améliorer le temps de chargement NowWeb
Vous pouvez précharger des pages avec des ressources pouvant être mises en cache en arrière-plan pour améliorer les temps de chargement NowWeb initiaux. L’exemple suivant montre comment utiliser la fonction webService.preloadWebCache() pour précharger des pages spécifiées.
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)
}
}
Créer des vues pour afficher du contenu Web
Une fois que vous avez instancié une instance de NowWebService, vous pouvez l’utiliser pour créer des vues afin d’afficher les pages Web hébergées sur votre ServiceNow instance.
L’exemple suivant montre comment créer une vue NowWebViewController :
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)")
}Dans cet exemple, url il s’agit de l’URL de la page initiale à charger dans la vue. Cette URL doit pointer vers une page hébergée sur l’instance spécifiée ServiceNow . Les URL relatives fonctionnent également et sont relatives à l’instance ServiceNow ciblée par le NowWebService.
Une fois créé, vous pouvez transmettre NowWebViewController à une pile de navigation existante. La page initiale n’est pas chargée tant que vous n’avez pas appelé la méthode loadPage().