ServiceNow インスタンスでホストされている Web ページを表示します
ServiceNow インスタンス内でホストされている Web ページをネイティブ Android アプリケーションに表示できます。
Mobile 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 を使用」を参照してください。