インスタンスでホストされている ServiceNow Web ページを表示する
インスタンス内で 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 をテーマに設定する。