Compartir a través de


Análisis de App Center (Windows)

Importante

Visual Studio App Center se retiró el 31 de marzo de 2025, excepto las características de análisis y diagnóstico, que seguirán siendo compatibles hasta el 30 de junio de 2026. Más información.

App Center Analytics le ayuda a comprender el comportamiento del usuario y la interacción del cliente para mejorar la aplicación. El SDK captura automáticamente el recuento de sesiones y las propiedades del dispositivo, como el modelo, la versión del sistema operativo, etc. Puede definir sus propios eventos personalizados para medir las cosas que le importan. Toda la información capturada está disponible en el portal de App Center para analizar los datos.

Siga la sección Introducción a WPF/WinForms o Introducción a UWP/WinUI (en función de la plataforma) si aún no ha configurado el SDK en la aplicación.

Las instrucciones de esta página funcionan para UWP (incluidos Xamarin.Forms y WinUI), WPF y WinForms.

Información de sesión y dispositivo

Una vez que agregue App Center Analytics a la aplicación e inicie el SDK, realizará un seguimiento automático de las sesiones y las propiedades del dispositivo, como la versión del sistema operativo, el modelo, etc.

Nota:

En las aplicaciones WinUI, la cantidad de sesiones puede ser menor que en las aplicaciones para UWP debido a aspectos específicos de su ciclo de vida.

Código de país

El SDK no notifica automáticamente el código de país. Si deseas reportarlo manualmente, puedes seguir las instrucciones de la plataforma a continuación.

Plataforma Universal de Windows (UWP)

  1. Asegúrese de habilitar la funcionalidad de ubicación para la aplicación.
  2. Obtenga una clave de autenticación de Mapas de Bing.
  3. Use el código siguiente en cualquier lugar antes de llamar a AppCenter.Start(... typeof(Analytics) ...);. Como BingMapsToken, use la clave obtenida en el paso 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);
}

Nota:

Para que el código de país se muestre en las sesiones de Analytics, AppCenter.SetCountryCode se debe llamar antes de llamar a AppCenter.Start.

WPF/WinForms

Como las plataformas WPF/WinForms no tienen una API de geolocalización, puede usar un código de país del 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);
}

Nota:

Para que el código de país se muestre en las sesiones de Analytics, AppCenter.SetCountryCode se debe llamar antes de llamar a AppCenter.Start.

Eventos personalizados

Puede realizar un seguimiento de sus propios eventos personalizados con hasta 20 propiedades para comprender la interacción entre los usuarios y la aplicación.

Una vez que haya iniciado el SDK, use el método TrackEvent() para realizar seguimiento de los eventos con propiedades. Puede enviar hasta 200 nombres de evento distintos. Además, hay un límite máximo de 256 caracteres para el nombre de cada evento y 125 caracteres para el nombre y valor de cada propiedad del evento.

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

Las propiedades de los eventos son completamente opcionales: si solo desea realizar un seguimiento de un evento, use este ejemplo en su lugar:

Analytics.TrackEvent("Video clicked");

Habilitación o deshabilitación de App Center Analytics en tiempo de ejecución

Puede habilitar y deshabilitar App Center Analytics en tiempo de ejecución. Si la deshabilita, el SDK no recopilará más información de análisis para la aplicación.

Analytics.SetEnabledAsync(false);

Para volver a habilitar App Center Analytics, use la misma API, pero pase true como parámetro.

Analytics.SetEnabledAsync(true);

No es necesario esperar esta llamada para que otras llamadas API (como IsEnabledAsync) sean coherentes.

El estado se conserva en el almacenamiento del dispositivo en los inicios de la aplicación.

Comprobación de si App Center Analytics está habilitado

También puede comprobar si App Center Analytics está habilitado o no.

bool isEnabled = await Analytics.IsEnabledAsync();

Administración de la sesión de inicio

De forma predeterminada, el identificador de sesión depende del ciclo de vida de la aplicación. Si desea controlar manualmente el inicio de una nueva sesión, siga los pasos siguientes:

Nota:

Preste atención a que cada llamada de Analytics.StartSession() API generará una nueva sesión. Si en el modo manual de seguimiento de sesión, no se llamará a esta API, todos los registros de envío tendrán un valor de sesión null.

Nota:

Preste atención a que después del lanzamiento de una nueva aplicación, el identificador de sesión se volverá a generar.

  • Llame al método siguiente antes de iniciar el SDK:
Analytics.EnableManualSessionTracker();
  • A continuación, puede usar la StartSession API después de AppCenter.Start:
Analytics.StartSession();

Tamaño del almacenamiento local

De forma predeterminada, el SDK almacena todos los registros de eventos hasta 10 MB. Los desarrolladores pueden usar una API para aumentar el tamaño de almacenamiento y el SDK seguirá almacenando registros hasta que el almacenamiento esté lleno.

Sin acceso a Internet

Cuando no hay conectividad de red, el SDK guarda hasta 10 MB de registros en el almacenamiento local. Una vez que el almacenamiento esté lleno, el SDK comenzará a descartar los registros antiguos para dejar espacio a los nuevos registros. Una vez que el dispositivo vuelva a acceder a Internet, el SDK enviará registros en el lote de 50 o después de cada 6 segundos.

Registros de eventos de procesamiento por lotes

El SDK de App Center carga los registros en un lote de 50 y, si el SDK no tiene 50 registros para enviar, seguirá enviando registros después de 6 segundos. Puede haber un máximo de tres lotes enviados en paralelo.

Lógica de reintento y retroceso

El SDK de App Center admite reintentos de retroceso en errores de red recuperables. A continuación se muestra la lógica de reintento:

  • 3 intentos máximos por solicitud.
  • Cada solicitud tiene su propio sistema de gestión de reintentos.
  • Todos los canales de transmisión están deshabilitados (hasta el siguiente proceso de la aplicación) después de que una solicitud agote todos sus intentos de reintento.

Lógica de retroceso

  • 50% selección aleatoria, primer reintento entre 5s y 10s, segundo reintento entre 2,5 y 5 minutos, último intento entre 10 y 20 minutos.
  • Si la red cambia de apagado a activado (o de wi-fi a móvil), los estados de reintento se restablecen y las solicitudes se reintentan inmediatamente.