인스턴스에 호스팅된 웹 페이지 표시 ServiceNow

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기5분
  • 네이티브 Android 애플리케이션에서 인스턴스 내에 ServiceNow 호스팅되는 웹 페이지를 표시할 수 있습니다.

    Mobile SDK 필요한 인증 및 세션 관리를 원활하게 처리할 수 있도록 하며, NowWebSDK API는 인스턴스에 있는 페이지를 처리하는 데 필요한 기능을 제공합니다 ServiceNow . 이러한 웹 페이지에는 플랫폼에서 가능한 모든 동적 상호 작용이 ServiceNow 있습니다.

    이러한 기능을 사용하려면 먼저 NowWebService의 인스턴스를 만들어야 합니다. 이렇게 하려면 makeWebService() 메서드를 호출하고 인스턴스와 이미 초기화된 NowSDK에 대한 URL을 제공해야 합니다ServiceNow. 또한 애플리케이션 내에서 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.