Partilhar via


Análise do App Center (Windows)

Importante

O Visual Studio App Center foi desativado em 31 de março de 2025, exceto para os recursos de Análise e Diagnóstico, que continuarão a ter suporte até 30 de junho de 2026. Mais informações.

O App Center Analytics ajuda você a entender o comportamento do usuário e o envolvimento do cliente para melhorar seu aplicativo. O SDK captura automaticamente a contagem de sessões e as propriedades do dispositivo, como modelo, versão do sistema operacional, etc. Você pode definir seus próprios eventos personalizados para medir coisas que são importantes para você. Todas as informações capturadas estão disponíveis no portal do App Center para você analisar os dados.

Siga a seção WPF/WinForms Getting Started ou UWP/WinUI Getting Started (com base na sua plataforma) se você ainda não configurou o SDK em seu aplicativo.

As instruções nesta página funcionam para UWP (incluindo Xamarin.Forms e WinUI), WPF e WinForms.

Informações da sessão e do dispositivo

Depois de adicionar o App Center Analytics ao seu aplicativo e iniciar o SDK, ele rastreará automaticamente as sessões e as propriedades do dispositivo, como versão do sistema operacional, modelo, etc.

Observação

Em aplicativos WinUI, a quantidade de sessões pode ser menor do que em aplicativos UWP devido a especificidades de seu ciclo de vida.

Código do país

O código do país não é reportado automaticamente pelo SDK. Se você quiser denunciá-lo manualmente, você pode seguir as instruções para sua plataforma abaixo.

UWP (Plataforma Universal do Windows)

  1. Certifique-se de que ativa a Capacidade de Localização para a sua aplicação.
  2. Obtenha uma chave de autenticação do Bing Maps.
  3. Use o código a seguir em qualquer lugar antes de chamar AppCenter.Start(... typeof(Analytics) ...);. Como BingMapsToken, use a chave obtida na etapa 2.
private static async Task SetCountryCode()
{
    // The following country code is used only as a fallback for the main implementation.
    // This fallback country code doesn't reflect the physical device location, but rather the
    // country that corresponds to the culture it uses.
    var countryCode = new GeographicRegion().CodeTwoLetter;
    var accessStatus = await Geolocator.RequestAccessAsync();
    switch (accessStatus)
    {
        case GeolocationAccessStatus.Allowed:
            var geoLocator = new Geolocator
            {
                DesiredAccuracyInMeters = 100
            };
            var position = await geoLocator.GetGeopositionAsync();
            var myLocation = new BasicGeoposition
            {
                Longitude = position.Coordinate.Point.Position.Longitude,
                Latitude = position.Coordinate.Point.Position.Latitude
            };
            var pointToReverseGeocode = new Geopoint(myLocation);
            MapService.ServiceToken = Constants.BingMapsAuthKey;
            var result = await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);
            if (result.Status != MapLocationFinderStatus.Success || result.Locations == null || result.Locations.Count == 0)
            {
                break;
            }

            // The returned country code is in 3-letter format (ISO 3166-1 alpha-3).
            // Below we convert it to ISO 3166-1 alpha-2 (two letter).
            var country = result.Locations[0].Address.CountryCode;
            countryCode = new GeographicRegion(country).CodeTwoLetter;
            break;
        case GeolocationAccessStatus.Denied:
            AppCenterLog.Info(LogTag, "Geolocation access denied. To set country code in App Center, enable location service in Windows 10.");
            break;
        case GeolocationAccessStatus.Unspecified:
            break;
    }
    AppCenter.SetCountryCode(countryCode);
}

Observação

Para que o código do país seja exibido nas sessões do Google Analytics, AppCenter.SetCountryCode deve ser chamado antes da chamada AppCenter.Start.

WPF/WinForms

Como as plataformas WPF/WinForms não têm uma API de geolocalização, você pode usar um código de país do sistema.

using System.Globalization;

private static void SetCountryCode()
{
    // This fallback country code doesn't reflect the physical device location, but rather the
    // country that corresponds to the culture it uses.
    var countryCode = RegionInfo.CurrentRegion.TwoLetterISORegionName;
    AppCenter.SetCountryCode(countryCode);
}

Observação

Para que o código do país seja exibido nas sessões do Google Analytics, AppCenter.SetCountryCode deve ser chamado antes da chamada AppCenter.Start.

Eventos personalizados

Você pode acompanhar seus próprios eventos personalizados com até 20 propriedades para entender a interação entre seus usuários e o aplicativo.

Depois de iniciar o SDK, use o TrackEvent() método para monitorizar os seus eventos com propriedades. Você pode enviar até 200 nomes de eventos distintos. Além disso, há um limite máximo de 256 caracteres por nome de evento e 125 caracteres por nome de propriedade de evento e valor de propriedade de evento.

Analytics.TrackEvent("Video clicked", new Dictionary<string, string> {
    { "Category", "Music" },
    { "FileName", "favorite.avi"}
});

As propriedades dos eventos são totalmente opcionais – se você quiser apenas acompanhar um evento, use este exemplo:

Analytics.TrackEvent("Video clicked");

Habilitar ou desabilitar o App Center Analytics em tempo de execução

Você pode ativar e desativar o App Center Analytics em tempo de execução. Se você desativá-lo, o SDK não coletará mais informações de análise para o aplicativo.

Analytics.SetEnabledAsync(false);

Para habilitar o App Center Analytics novamente, use a mesma API, mas passe true como parâmetro.

Analytics.SetEnabledAsync(true);

Você não precisa esperar essa chamada para tornar outras chamadas de API (como IsEnabledAsync) consistentes.

O estado é persistido no armazenamento do dispositivo em todas as inicializações de aplicativos.

Verifique se o App Center Analytics está ativado

Você também pode verificar se o App Center Analytics está habilitado ou não.

bool isEnabled = await Analytics.IsEnabledAsync();

Gerenciar sessão de início

Por padrão, o ID da sessão depende do ciclo de vida do aplicativo. Se você quiser controlar o início de uma nova sessão manualmente, siga as próximas etapas:

Observação

Preste atenção que cada chamada da API Analytics.StartSession() gerará uma nova sessão. Se no modo de rastreador de sessão manual essa API não for chamada, todos os logs de envio terão um valor de sessão nulo.

Observação

Preste atenção que, após o lançamento de um novo aplicativo, o ID da sessão será regenerado.

  • Chame o seguinte método antes do início do SDK:
Analytics.EnableManualSessionTracker();
  • Em seguida, você pode usar a StartSession API após o AppCenter.Start:
Analytics.StartSession();

Tamanho do armazenamento local

Por padrão, o SDK armazena todos os logs de eventos de até 10 MB. Os desenvolvedores podem usar uma API para aumentar o tamanho do armazenamento e o SDK continuará armazenando logs até que o armazenamento esteja cheio.

Sem acesso à internet

Quando não há conectividade de rede, o SDK salva até 10 MB de logs no armazenamento local. Quando o armazenamento estiver cheio, o SDK começará a descartar logs antigos para abrir espaço para os novos logs. Assim que o dispositivo tiver acesso à Internet de volta, o SDK enviará logs no lote de 50 ou após cada 6 segundos.

Registo de eventos em lote

O SDK do App Center carrega logs em um lote de 50 e, se o SDK não tiver 50 logs para enviar, ele ainda enviará logs após 6 segundos. Pode haver um máximo de três lotes enviados em paralelo.

Lógica de repetição e retrocesso

O SDK do App Center suporta novas tentativas de back-off em erros de rede recuperáveis. Abaixo está a lógica de reintentar:

  • 3 tentativas no máximo por solicitação.
  • Cada solicitação tem sua própria máquina de estado de repetição.
  • Todos os canais de transmissão são desativados (até o próximo processo do aplicativo) depois que uma solicitação esgota todas as suas tentativas.

Lógica de recuo

  • 50% randomização, primeira tentativa entre 5s e 10s, segunda tentativa entre 2,5 e 5 minutos, última tentativa entre 10 e 20 minutos.
  • Se a rede mudar de desligado para ligado (ou de wi-fi para móvel), os estados de repetição serão redefinidos e as solicitações serão repetidas imediatamente.