Exiba páginas da web hospedadas em seu ServiceNow instância
Você pode exibir páginas da web hospedadas em seu ServiceNow Em seu aplicativo iOS nativo.
. Mobile SDK fornece manipulação contínua da autenticação necessária e do gerenciamento de sessão, enquanto o fornece NowWebService A API fornece a funcionalidade necessária para lidar com páginas que residem no ServiceNow instância. Essas páginas da web têm todas as interações dinâmicas possíveis no ServiceNow plataforma.
Quando a webview é solicitada a carregar uma página da Web hospedada em um ServiceNow Cria uma solicitação HTTP com o cabeçalho do portador apropriado que contém o token de acesso OAuth fornecido pelo NowSDK. Quando a instância recebe esta solicitação, ela inicia uma nova sessão do usuário e retorna cookies relacionados a essa sessão. À medida que o usuário interage com as páginas da Web na webview, a instância usa os cookies para validar se a sessão ainda é válida. Neste ponto, o cabeçalho do portador não é mais relevante, somente os cookies são usados para validação de sessão. A sessão da Web expira se o usuário parar de interagir com o site por mais tempo do que o período de tempo limite. Se a sessão expirar, se o usuário tentar interagir com a página da Web, ele será redirecionado automaticamente para a página de login. NowWebViewController detecta o redirecionamento e tenta iniciar uma nova sessão da web solicitando um token de acesso atualizado do NowSDK e usando o token para criar uma solicitação HTTP (com cabeçalho do portador) para a última página carregada conhecida.
Para usar esses recursos, você deve primeiro criar uma instância do NowWebService . Para fazer isso, você deve chamar MakeWebService() E forneça o URL para seu ServiceNow e um já inicializado NowSDK . Além disso, você deve ter importado NowWeb em sua aplicação. Você deve ter uma referência ao NowWebService enquanto você estiver usando NowWeb serviço.
A seguir, é mostrado um exemplo de como criar um objeto NowWebService usando async/await:
do {
let service = try await NowWeb.makeWebService(instanceUrl: instanceUrl)
self.webService = service
} catch {
debugPrint("Web Service creation failed with error: \(error.localizedDescription)")
}A seguir, é mostrado um exemplo de como criar um objeto NowWebService usando um manipulador de conclusão:
import Combine
import NowWeb
import UIKit
...
public func makeWebService(instanceUrl: URL,
completion: @escaping ((Result<NowWeb.NowWebService, NowSDK.NowServiceError>) -> Void))
Pré-carregue páginas para melhorar o tempo de carregamento do NowWeb
Pré-carregar páginas com recursos armazenáveis em cache em segundo plano para melhorar o inicial NowWeb tempos de carregamento. O exemplo a seguir mostra como usar o. WebService.preloadWebCache() função para pré-carregar páginas especificadas.
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)
}
}
Crie exibições para exibir conteúdo da Web
Depois de ter instanciado uma instância do NowWebService, você pode usá-lo para criar exibições para exibir páginas da web hospedadas no ServiceNow instância.
O exemplo a seguir mostra como criar um NowWebViewController exibir:
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)")
}Neste exemplo, urlÉ o URL da página inicial a ser carregada na exibição. Este URL deve apontar para uma página hospedada no especificado ServiceNow instância. URLs relativos também funcionam e são relativos ao ServiceNow Instância direcionada pelo NowWebService.
Uma vez criado, você pode enviar o NowWebViewController para uma pilha de navegação existente. A página inicial não é carregada até que você chame LoadPage() método.