Outras APIs do Android

Importante

O Visual Studio App Center está programado para ser desativado em 31 de março de 2025. Embora você possa continuar a usar o Visual Studio App Center até que ele seja totalmente desativado, há várias alternativas recomendadas para as quais você pode considerar a migração.

Saiba mais sobre linhas do tempo e alternativas de suporte.

Ajustar o nível de log

Você pode controlar a quantidade de mensagens de log pelo App Center que aparecem no LogCat. Use a AppCenter.setLogLevel() API para habilitar o registro em log adicional durante a depuração. Os níveis de log correspondem aos definidos em android.util.Log. Por padrão, ele é definido ASSERT como para aplicativos não depuráveis e WARN para aplicativos depuráveis. Você pode definir o nível de log a qualquer momento desejado.

Para ter o maior número possível de mensagens de log, use Log.Verbose.

AppCenter.setLogLevel(Log.VERBOSE);
AppCenter.setLogLevel(Log.VERBOSE)

Identificar instalações

O SDK do App Center cria uma UUID para cada dispositivo depois que o aplicativo é instalado. Esse identificador permanece o mesmo para um dispositivo quando o aplicativo é atualizado e um novo é gerado somente quando o aplicativo é reinstalado ou o usuário exclui manualmente todos os dados do aplicativo. A API a seguir é útil para fins de depuração.

AppCenter.getInstallId();
AppCenter.getInstallId()

Essa API é assíncrona, você pode ler mais sobre isso em nosso guia de APIs assíncronas do App Center .

Observação

Esse método só deve ser usado depois AppCenter de iniciado, ele sempre retornará null antes de começar.

Identificar usuários

O SDK do App Center dá suporte à configuração de uma ID de usuário usada para aumentar os relatórios de falha. Para usar essa funcionalidade:

  1. Configure o SDK do App Center chamando AppCenter.start(...) conforme descrito no guia de introdução do SDK do App Center.
  2. Defina um userID no SDK usando o seguinte código:
AppCenter.setUserId("your-user-id");
AppCenter.setUserId("your-user-id")

Depois de definir uma ID de usuário, você pode usar o recurso de pesquisa do App Center para pesquisar relatórios de falha específicos para a ID. Saiba mais na documentação de pesquisa do App Center.

Observação

O valor da ID de usuário é limitado a 256 caracteres. Ele será mostrado com seus relatórios de falha, mas não usado para agregação ou contagens de usuários afetados. Caso você defina a ID de usuário várias vezes, somente a última ID de usuário será usada. Você precisa definir a ID de usuário por conta própria antes da inicialização de cada aplicativo, pois esse valor não é armazenado pelo SDK entre inicializações.

Desabilitar todos os serviços em runtime

Se você quiser desabilitar todos os serviços do App Center de uma só vez, use a setEnabled() API. Quando desabilitado, o SDK não encaminhará nenhuma informação para o App Center.

AppCenter.setEnabled(false);
AppCenter.setEnabled(false)

Para habilitar todos os serviços mais uma vez, use a mesma API, mas passe true como um parâmetro.

AppCenter.setEnabled(true);
AppCenter.setEnabled(true)

O estado é persistente no armazenamento do dispositivo entre as inicializações de aplicativos.

Essa API é assíncrona, você pode ler mais sobre isso em nosso guia de APIs assíncronas do App Center .

Observação

Esse método só deve ser usado depois AppCenter de ter sido iniciado.

Não permitir solicitações de rede

No SDK do App Center, as solicitações de rede são permitidas por padrão. Se você quiser enviar dados que o SDK do App Center coleta pela preocupação do usuário, você pode não permitir o envio automático de dados.

AppCenter.setNetworkRequestsAllowed(false);
AppCenter.setNetworkRequestsAllowed(false)

Nesse caso, o SDK do App Center continua a coletar dados, mas eles serão enviados somente quando as solicitações de rede forem permitidas.

AppCenter.setNetworkRequestsAllowed(true);
AppCenter.setNetworkRequestsAllowed(true)

Observação

Esse valor é retido entre as partidas.

A qualquer momento, você pode marcar se o envio de dados no SDK do App Center é permitido ou não.

AppCenter.isNetworkRequestsAllowed();
AppCenter.isNetworkRequestsAllowed()

Observação

O valor salvo anteriormente em SharedPreferences é ignorado até AppCenter ser iniciado. Ele retornará o último valor definido usando setNetworkRequestsAllowed ou true se o valor não tiver sido alterado antes do AppCenter ser iniciado.

Alterar o estado do serviço em runtime

Habilite ou desabilite os serviços no runtime com o seguinte código:

Analytics.setEnabled(false);
Analytics.setEnabled(false)

Observação

Esse método só deve ser usado depois Analytics de ter sido iniciado.

Verificar se o App Center está habilitado

Você também pode marcar se o App Center estiver habilitado ou não.

AppCenter.isEnabled();
AppCenter.isEnabled()

Essa API é assíncrona, você pode ler mais sobre isso em nosso guia de APIs assíncronas do App Center .

Observação

Esse método só deve ser usado depois AppCenter de iniciado, ele sempre retornará false antes de começar.

Verificar a versão do SDK do App Center no runtime

Você pode obter a versão do SDK do App Center que está usando no momento.

AppCenter.getSdkVersion();
AppCenter.getSdkVersion()

Tamanho de armazenamento

Ao usar o SDK do App Center, os logs são armazenados localmente no dispositivo. Logs grandes podem ocupar muito espaço, portanto, você pode optar por limitar o tamanho do banco de dados local. Ele também é útil em conjunto com as pause APIs e resume . Se você espera ficar em pausa por um longo tempo, poderá usar um tamanho de banco de dados maior para armazenar mais eventos.

Você pode usar a setMaxStorageSize API para definir o tamanho do BD local. A API é assíncrona e o retorno de chamada é chamado quando você inicia os serviços do App Center. Por esse motivo, setMaxStorageSize deve ser chamado antes da chamada para AppCenter.start(...). Você só pode chamar a API uma vez.

// Use 20 MB for storage.
AppCenter.setMaxStorageSize(20 * 1024 * 1024L).thenAccept(new AppCenterConsumer<Boolean>() {

    @Override
    public void accept(Boolean success) {
        // The success parameter is false when the size can't be honored.
    }
});
AppCenter.start("{Your App Secret}", Analytics.class);
// Use 20 MB for storage.
AppCenter.setMaxStorageSize(20 * 1024 * 1024).thenAccept {
    // The success parameter (it) is false when the size can't be honored.
}

AppCenter.start(application, "{Your App Secret}", Analytics::class.java)

Se você não definir o tamanho máximo do armazenamento, o SDK usará um tamanho máximo padrão de 10 MB. O tamanho mínimo que você tem permissão para definir é 20 KB.

Observação

O tamanho máximo real do armazenamento pode ser maior do que o valor escolhido. O SQLite arredonda o tamanho para o próximo múltiplo do tamanho da página. O SDK do App Center usa um tamanho de página de 4 KB.

Observação

Os logs com mais de 25 dias serão descartados.

Adicionar repositórios de distribuição

Por padrão, as atualizações no aplicativo funcionam para aplicativos instalados a partir da lista definida de repositórios. Se você quiser distribuir seu aplicativo por meio de repositórios que não estão incluídos na lista predefinida de repositórios, poderá adicionar o instalador de pacote necessário usando a API abaixo antes de iniciar o App Center:

    Set<String> stores = new HashSet<String>();
    stores.add("com.store1.packageinstaller");
    stores.add("com.store2.packageinstaller");
    Distribute.addStores(stores);

Observação

Não adicione lojas como o Google Play para evitar restrições.

Chamadas à API malsucedidas

Há muitos motivos pelos quais o retorno de chamada pode falhar.

  • O tamanho especificado é um valor inválido (menor que 20 KB ou maior que 140 TB).
  • O tamanho do banco de dados atual é maior que o tamanho máximo especificado.
  • A API já foi chamada. Você pode configurá-lo apenas uma vez por processo.
  • A API foi chamada após AppCenter.start(...).

Você pode marcar avisos e erros no console usando a marca de AppCenter log para solucionar problemas de configuração.

APIs assíncronas no SDK do Android

APIs assíncronas retornam um AppCenterFuture objeto em vez de retornar o resultado diretamente.

Você pode chamar get() o objeto futuro para aguardar o resultado de forma síncrona ou fornecer um retorno de chamada como este, preenchendo os respectivos tipos de retorno ao chamar a API:

AppCenterFuture<{ReturnType}> future = {AnyAsyncApi}();
future.thenAccept(new AppCenterConsumer<{ReturnType}>() {

    @Override
    public void accept({ReturnType} result) {

        // do something with result, this is called back in UI thread.
    }
});
val future = {AnyAsyncApi}()
future.thenAccept(object : AppCenterConsumer<{ReturnType}> {
    override fun accept(t: {ReturnType}?) {
        // do something with result, this is called back in UI thread.
    }
})

Para evitar bloquear o thread da interface do usuário que causa lentidão no aplicativo, considere usar thenAccept com o retorno de chamada o tempo todo.

Em um thread de trabalho, você pode chamar {AnyAsyncApi}().get().

Exemplo de retorno de chamada:

AppCenter.isEnabled().thenAccept(new AppCenterConsumer<Boolean>() {

    @Override
    public void accept(Boolean enabled) {
        Log.d("MyApp", "AppCenter.isEnabled=" + enabled);
    }
});
AppCenter.isEnabled().thenAccept { enabled -> 
    Log.d("MyApp", "AppCenter.isEnabled=$enabled")
}

Exemplo síncrono:

boolean enabled = AppCenter.isEnabled().get();
val enabled = AppCenter.isEnabled().get()