Exibir páginas da Web hospedadas em sua instância ServiceNow

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 2 min. de leitura
  • Você pode exibir páginas da Web hospedadas em sua instância ServiceNow em sua aplicação nativa Android.

    O Mobile SDK fornece manipulação contínua da autenticação necessária e gestão de sessões, enquanto a API NowWebSDK fornece a funcionalidade necessária para lidar com páginas que residem em sua instância ServiceNow. Essas páginas da Web têm todas as interações dinâmicas possíveis na plataforma ServiceNow.

    Para usar esses recursos, você deve primeiro criar uma instância do NowWebService. Para fazer isso, você deve chamar o método makeWebService() e fornecer o URL para sua instância ServiceNow e um NowSDKjá inicializado. Além disso, você deve ter importado o NowWeb na sua aplicação. Você deve manter uma referência ao NowWebService pelo tempo que estiver usando o serviço NowWeb.

    Veja a seguir um exemplo de como criar um objeto 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 }
        }
    }

    Pré-carregar páginas para melhorar o tempo de carregamento do NowWeb

    Você pode pré-carregar páginas com recursos armazenáveis em cache em segundo plano para melhorar os tempos de carregamento iniciais do NowWeb. O exemplo a seguir mostra como usar a função webService.preloadWebCache() para pré-carregar a página do MESP. Este método usa uma lista de URIs para pré-buscar mais páginas.

    suspend fun preloadNowWeb() {
      val webService = sdkmanager.getNowWebService()
      webService.preloadWebCache(listOf(URI("mesp")))
    }

    Criar exibições para exibir conteúdo da web

    Depois de instanciar uma instância de NowWebService, você pode usá-la para iniciar uma atividade para exibir páginas da Web hospedadas em sua instância ServiceNow.

    O exemplo a seguir mostra como iniciar uma atividade 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{})
        }
      }
    }

    Neste exemplo, url é o URL da página inicial a ser carregada na exibição. Este URL deve apontar para uma página que está hospedada na instância ServiceNow especificada.

    Suporte ao tema de cores para elementos de IU NowWeb

    Você pode especificar um tema de cores personalizado que se aplica a todos os elementos de IU em uma exibição ao chamar o método NowWebService launch(). Para criar este tema de cores personalizado, crie um tipo que implemente a interface NowWebTheme e passe-o no parâmetro de tema da chamada 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
      })
    }

    Para obter informações adicionais sobre como aplicar temas de cores em uma exibição da web, consulte Use NowUIColoring para o tema NowWebTheme e NowChatTheme.