ServiceNow インスタンスでホストされている Web ページを表示します
ネイティブ iOS アプリケーションの ServiceNow インスタンス内でホストされている Web ページを表示できます。
モバイル SDK は必要な認証とセッション管理をシームレスに処理し、NowWebService API は ServiceNow インスタンスに存在するページを処理するために必要な機能を提供します。これらの Web ページには、 ServiceNow プラットフォームで可能なすべての動的なインタラクションがあります。
Web ビューは、 ServiceNow インスタンスでホストされている Web ページのロードを要求されると、NowSDK によって提供される OAuth アクセストークンを含む適切なベアラーヘッダーを持つ HTTP 要求を作成します。インスタンスは、この要求を受信すると、新しいユーザーセッションを開始し、そのセッションに関連する cookie を返します。ユーザーが Web ビュー内の Web ページを操作すると、インスタンスは cookie を使用してセッションがまだ有効であることを検証します。この時点で、ベアラーヘッダーは関連性を失い、Cookie のみがセッションの検証に使用されます。ユーザーがタイムアウト期間よりも長く Web サイトとのやり取りを停止すると、Web セッションは期限切れになります。セッションの有効期限が切れた後、ユーザーが Web ページを操作しようとすると、自動的にログインページにリダイレクトされます。NowWebViewController はリダイレクトを検出し、NowSDK から更新されたアクセストークンを要求し、そのトークンを使用して最後に読み込まれた既知のページの HTTP 要求 (ベアラーヘッダー付き) を作成することで、新しい Web セッションの開始を試みます。
これらの機能を使用するには、まず NowWebService のインスタンスを作成する必要があります。これを行うには、 makeWebService() メソッドを呼び出し、 ServiceNow インスタンスへの URL と既に初期化されている NowSDK を指定する必要があります。さらに、アプリケーション内に NowWeb をインポートしておく必要があります。NowWeb サービスを使用している間は、NowWebService への参照を保持する必要があります。
async/await を使用して NowWebService オブジェクトを作成する方法の例を次に示します。
do {
let service = try await NowWeb.makeWebService(instanceUrl: instanceUrl)
self.webService = service
} catch {
debugPrint("Web Service creation failed with error: \(error.localizedDescription)")
}補完ハンドラーを使用して NowWebService オブジェクトを作成する方法の例を次に示します。
import Combine
import NowWeb
import UIKit
...
public func makeWebService(instanceUrl: URL,
completion: @escaping ((Result<NowWeb.NowWebService, NowSDK.NowServiceError>) -> Void))
ページをプリロードして NowWeb の読み込み時間を短縮する
バックグラウンドでキャッシュ可能なリソースを含むページをプリロードして、 NowWeb の初期ロード時間を短縮できます。次の例は、 webService.preloadWebCache() 関数を使用して、指定されたページをプリロードする方法を示しています。
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)
}
}
Web コンテンツを表示するビューの作成
NowWeb サービスのインスタンスを作成したら、それを使用して、 ServiceNow インスタンスでホストされている Web ページを表示するビューを作成できます。
次の例は、 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)")
}この例では、ビュー内でロードする最初のページの URL が url です。この URL は、指定された ServiceNow インスタンスでホストされているページを指す必要があります。相対 URL も機能し、NowWebService のターゲットとなる ServiceNow インスタンスを基準にした相対 URL です。
作成後、NowWebViewController を既存のナビゲーションスタックにプッシュできます。最初のページは、 loadPage() メソッドを呼び出すまでロードされません。