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

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:5分
  • ネイティブAndroidアプリケーションの ServiceNow インスタンス内でホストされている Web ページを表示できます。

    モバイル SDK は必要な認証とセッション管理をシームレスに処理し、NowWebSDK API は ServiceNow インスタンスに存在するページを処理するために必要な機能を提供します。これらの Web ページには、 ServiceNow プラットフォームで可能なすべての動的なインタラクションがあります。

    これらの機能を使用するには、まず NowWebService のインスタンスを作成する必要があります。これを行うには、 makeWebService() メソッドを呼び出し、 ServiceNow インスタンスへの URL と既に初期化されている NowSDK を指定する必要があります。さらに、アプリケーション内に NowWeb をインポートしておく必要があります。NowWeb サービスを使用している限り、NowWebService への参照を保持する必要があります。

    NowWebService オブジェクトの作成方法の例を次に示します。

    /**
     * Helper class used to handle different Now service instances.
     */
    @Singleton
    class SdkManager @Inject constructor() {
    
        private var nowWebService: NowWebService? = null
    
        /**
         * Create the NowWebService once in the lifetime of the application inside the Application class or
         * another manager class that will be injected into other classes via dagger/hilt.
         * NowWebService should be created after initializing the NowSDK
         */
        suspend fun getNowWebService(): NowWebService? {
            if (nowWebService != null) return nowWebService
    
            return NowWebSDK.makeWebService(URL("https://instance-name.service-now.com")).getOrThrow()
                .also { this.nowWebService = it }
        }
    }

    ページをプリロードして NowWeb の読み込み時間を短縮する

    バックグラウンドでキャッシュ可能なリソースを含むページをプリロードして、 NowWeb の初期ロード時間を短縮できます。次の例は、 webService.preloadWebCache() 関数を使用して mesp ページをプリロードする方法を示しています。このメソッドは、URI のリストを取得して、さらにページをプリフェッチします。

    suspend fun preloadNowWeb() {
      val webService = sdkmanager.getNowWebService()
      webService.preloadWebCache(listOf(URI("mesp")))
    }

    Web コンテンツを表示するビューの作成

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

    次の例は、NowWeb アクティビティを起動する方法を示しています。

    //Activity that will start the NowWeb
    class MainActivity : AppCompatActivity() {
    
      @Inject
      lateinit var sdkManager: SdkManager
    
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        // Start NowWeb
        lifecycleScope.launch {
          sdkManager.getNowWebService()?.launch(this@MainActivity, URL("https://instance-name.service-now.com"), object : NowWebTheme{})
        }
      }
    }

    この例では、ビュー内でロードする最初のページの URL が url です。この URL は、指定された ServiceNow インスタンスでホストされているページを指す必要があります。

    NowWeb UI 要素のカラーテーマのサポート

    NowWebService launch() メソッドを呼び出すときに、ビュー内のすべての UI 要素に適用されるカスタムカラーテーマを指定できます。このカスタムカラーテーマを作成するには、 NowWebTheme インターフェイスを実装するタイプを作成し、 NowWebService.launch() 呼び出しのthemeパラメーターで渡します。

    suspend fun launchNowWeb() {
        val webService = getNowWebService()
    
        val webTheme = object : NowWebTheme {
            override val brand: Int
                get() = Color.BLUE
    
            override val textPrimary: Int
                get() = Color.BLACK
    
            //Override remaining theme colors
        }
        webService?.launch(activity, URL("https://instance-name.service-now.com"), webTheme)
    }

    Web ビュー内でのカラーテーマの適用の詳細については、「 NowUIColoring を使用して NowWebTheme と NowChatTheme をテーマにする」を参照してください。