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

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

    O Mobile SDK fornece manipulação perfeita da autenticação necessária e do gerenciamento 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 em sua aplicação. Você deve manter uma referência ao NowWebService enquanto 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é-carregue 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 obtém 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 criar uma instância de uma instância do 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 do 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 da IU do NowWeb

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