---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# ServiceNowインスタンスでホストされている Web ページを表示します

# ServiceNowインスタンスでホストされている Web ページを表示します {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：5分

ServiceNowインスタンス内でホストされている Web ページをネイティブ iOS アプリケーションに表示できます。
Mobile SDKは必要な認証とセッション管理のシームレスな処理を提供し、[NowWebService](https://servicenow-prod.fluidtopics.net/pmzK7g3nZQ4vUHv~tc0mhw#NowWebServiceiOSAPI "NowWebService クラスは、ServiceNowインスタンス上の Web ページの参照を可能にする関数を提供します。") 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 コンテンツを表示するビューの作成 {#mobsdk-ios-display-web-pages__section_k5l_c11_kqb}

NowWebService のインスタンスを作成したら、それを使用して、 ServiceNow インスタンスでホストされている Web ページを表示するビューを作成できます。

次の例は、 [NowWebViewController](https://servicenow-prod.fluidtopics.net/U8ghLoU6ToYfi328VFWHrg#NWebViewControlleriOSAPI "NowWebViewController クラスは、Web ビューアを管理できるようにする関数を提供します。") ビューを作成する方法を示しています。  

    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 インスタンスを基準にしています。

作成したら、NowWebViewController を既存のナビゲーション スタックにプッシュできます。最初のページは、 [loadPage()](https://servicenow-prod.fluidtopics.net/U8ghLoU6ToYfi328VFWHrg#NWVC-loadPage "要求が認証されると、 makeWebViewController() メソッドを使用してインスタンス化中に提供された初期 URL のロードを開始します。") メソッドを呼び出すまでロードされません。

## Web ユーザーインターフェイスのテーマ設定 {#mobsdk-ios-display-web-pages__section_mvp_5c1_kqb}

Web UI の色をカスタマイズするには、 makeWebViewController() 呼び出しでテーマオブジェクトを渡します。カスタマイズできるすべての要素のリストについては、「 [NowWebColoring プロトコル - iOS](https://servicenow-prod.fluidtopics.net/mU3Ay2GkWPxL4V~yAMvj6A "NowWebColoring プロトコルは、ネイティブ Web ビューの ServiceNow インスタンスでホストされている Web ページ内で使用される色のデフォルト値を提供します。")」を参照してください。デフォルトでは、Web UI はすべての NowSDK UI 要素に NowUIColor テーマを使用します。Web UI にテーマを適用する方法に関するサンプルコードスニペットについては、 [NowWebThemeable プロトコル: iOS](https://servicenow-prod.fluidtopics.net/dJtE4w9m2W5D6RNOlxfQaQ "NowWebThemeable プロトコルには、ネイティブ Web ビューで ServiceNow インスタンスでホストされている Web ページ内で使用される色を上書きできるプロパティが用意されています。") を参照してください。

