Compartilhar via


Outras APIs do Android

Importante

O Visual Studio App Center foi desativado em 31 de março de 2025, com exceção dos recursos de Análise e Diagnóstico, que continuarão com suporte até 30 de junho de 2026. Saiba mais.

Ajustar o nível de log

Você pode controlar a quantidade de mensagens de log pelo App Center que aparecem no LogCat. Utilize a API AppCenter.setLogLevel() para ativar logs adicionais durante a depuração. Os níveis de log correspondem aos definidos em android.util.Log. Por padrão, ele é definido como ASSERT 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 máximo de mensagens de log possível, 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 do início.

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 do 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 do 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 tempo de execução

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 encaminha 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 é mantido no armazenamento do dispositivo entre as inicializações do aplicativo.

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 que AppCenter tiver 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 coletados pelo SDK do App Center por solicitação do usuário, você pode desativar o envio automático de dados.

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

Nesse caso, o SDK do App Center continua coletando dados, mas ele será enviado somente quando as solicitações de rede forem permitidas.

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

Observação

Esse valor é mantido entre as partidas.

A qualquer momento, você pode verificar 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é que AppCenter seja iniciado. Ele retornará o último conjunto de valores usando setNetworkRequestsAllowed ou true se o valor não foi alterado antes de o AppCenter ser iniciado.

Alterar o estado do serviço em tempo de execução

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 que Analytics tiver sido iniciado.

Verificar se o App Center está habilitado

Você também pode verificar se o App Center está 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 do início.

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

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

AppCenter.getSdkVersion();
AppCenter.getSdkVersion()

Tamanho do 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. Também é útil em conjunto com as APIs e pause as resume APIs. 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 callback é acionado quando você inicia os serviços do App Center. Por esse motivo, setMaxStorageSize deve ser chamado antes de sua 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 na lista definida de lojas. Se você quiser distribuir seu aplicativo por meio de repositórios que não estão incluídos na lista predefinida de repositórios, adicione o instalador de pacote necessário usando a API abaixo antes do início do 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 verificar avisos e erros no console usando a marca de AppCenter log para solucionar problemas de configuração.

APIs assíncronas no SDK do Android

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

Você pode chamar get() no objeto futuro para aguardar o resultado de forma síncrona ou oferecer um retorno de chamada desta forma, preenchendo os tipos de retorno respectivos 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 a thread da interface do usuário, o que pode deixar o aplicativo lento, considere usar thenAccept sempre com o callback.

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()