Afficher les pages Web hébergées sur votre ServiceNow instance

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 3 minutes de lecture
  • Vous pouvez afficher les pages Web hébergées au sein de votre ServiceNow instance dans votre application iOS native.

    Le Mobile SDK fournit une gestion transparente de l’authentification et de la gestion des sessions requises, tandis que l’API NowWebService fournit les fonctionnalités requises pour gérer les pages résidant sur votre ServiceNow instance. Ces pages web disposent de toutes les interactions dynamiques possibles sur la ServiceNow plateforme.

    Lorsque la webview est invitée à charger une page Web hébergée sur une ServiceNow instance, elle crée une demande HTTP avec l’en-tête de porteur 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. Lorsque 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 porteur 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. Le NowWebViewController détecte la redirection et tente de démarrer une nouvelle session Web en demandant un jeton d’accès actualisé à partir du NowSDK et en utilisant le jeton pour créer une requête HTTP (avec 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 et un NowSDK déjà initialisé. De plus, vous devez avoir importé NowWeb dans votre application. Vous devez conserver une référence à NowWebService aussi longtemps que vous utilisez le service NowWeb .

    L’exemple suivant montre comment créer un objet NowWebService à l’aide de async/attend :

    do {
        let service = try await NowWeb.makeWebService(instanceUrl: instanceUrl)
        self.webService = service
    } catch {
        debugPrint("Web Service creation failed with error: \(error.localizedDescription)") 
    }

    L’exemple suivant illustre la 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échargez les pages pour améliorer le temps de chargement de 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 initiaux de Now Web . 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 l’URL de la page initiale doit être chargée 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 par push le 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( ).

    Thème de l’interface utilisateur Web

    Vous pouvez personnaliser les couleurs de l’interface utilisateur Web en passant un objet de thème dans l’appel makeWebViewController(). Pour obtenir la liste de tous les éléments que vous pouvez personnaliser, reportez-vous à la section Protocole NowWebColoring - iOS. Par défaut, l’interface utilisateur Web utilise le thème NowUIColor pour tous les éléments de l’interface utilisateur NowSDK. Reportez-vous à pour obtenir des exemples d’extraits Protocole NowWebThemeable : iOS de code sur la façon d’appliquer un thème à votre interface utilisateur Web.