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

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む5読むのに数分
  • インスタンス内で ServiceNow ホストされている Web ページをネイティブ Android アプリケーションで表示できます。

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

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

    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() 呼び出しのテーマパラメーターに渡します。

    lifecycleScope.launch {
      sdkManager.getNowWebService()?.launch(this@MainActivity, URL("https://instance-name.service-now.com"), object : NowWebTheme {
        override val brand: NowUIAdaptiveColor
          // Setting lightColor only. For dark theme default color will be used
          get() = NowUIAdaptiveColor(lightColor = Color.BLACK)
    
        override val primary: NowUIAdaptiveColor
          // Setting both lightColor and darkColor
          get() = NowUIAdaptiveColor(lightColor = Color.BLACK, darkColor = Color.WHITE)
    
        // Override the rest of color variables
      })
    }

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