인스턴스에서 호스팅되는 ServiceNow 웹 페이지 표시
인스턴스 내에서 ServiceNow 호스팅되는 웹 페이지를 네이티브 Android 애플리케이션으로 표시할 수 있습니다.
Mobile SDK 필요한 인증 및 세션 관리를 원활하게 처리하는 반면 NowWebSDK API는 인스턴스에 상주 ServiceNow 하는 페이지를 처리하는 데 필요한 기능을 제공합니다. 이러한 웹 페이지에는 플랫폼에서 가능한 모든 동적 상호 작용이 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")))
}
웹 콘텐츠를 표시하는 뷰 작성
NowWebService의 인스턴스를 인스턴스화한 후 이를 사용하여 인스턴스에서 호스팅되는 웹 페이지를 표시하는 활동을 시작할 수 있습니다ServiceNow.
다음 예제에서는 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 매개 변수에 전달합니다.
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
})
}웹 뷰 내에서 색상 테마를 적용하는 방법에 대한 자세한 내용은 을 참조하십시오 NowUIColoring을 사용하여 NowWebTheme 및 NowChatTheme 테마 적용.