Аналитика Центра приложений (Windows)
Важно!
Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio, пока он не будет полностью выведен из эксплуатации, существует несколько рекомендуемых вариантов, на которые вы можете рассмотреть возможность миграции.
Узнайте больше о сроках поддержки и альтернативных вариантах.
Аналитика Центра приложений помогает понять поведение пользователей и взаимодействие с клиентами, чтобы улучшить ваше приложение. Пакет SDK автоматически записывает количество сеансов и свойства устройств, такие как модель, версия ОС и т. д. Вы можете определить собственные пользовательские события для измерения важных для вас вещей. Вся записанная информация доступна на портале Центра приложений для анализа данных.
Если пакет SDK в приложении еще не настроен, следуйте инструкциям в разделе НАЧАЛО РАБОТЫ WPF/WinForms начало работы или UWP/WinUI (на основе вашей платформы).
Инструкции на этой странице работают для UWP (включая Xamarin.Forms и WinUI), WPF и WinForms.
После добавления аналитики Центра приложений в приложение и запуска пакета SDK он автоматически отслеживает сеансы и свойства устройства, такие как версия ОС, модель и т. д.
Примечание
В приложениях WinUI количество сеансов может быть меньше, чем в приложениях UWP из-за особенностей их жизненного цикла.
Код страны не передается пакетом SDK автоматически. Если вы хотите сообщить об этом вручную, следуйте приведенным ниже инструкциям для своей платформы.
- Убедитесь, что для приложения включена возможность определения местоположения .
- Получите ключ проверки подлинности Карты Bing.
- Используйте следующий код в любом месте перед вызовом
AppCenter.Start(... typeof(Analytics) ...);
. В качествеBingMapsToken
используйте ключ, полученный на шаге 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);
}
Примечание
Чтобы код страны отображался в сеансах аналитики, AppCenter.SetCountryCode
необходимо вызвать перед вызовом AppCenter.Start
.
Так как платформы WPF/WinForms не имеют API географического расположения, можно использовать системный код страны.
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);
}
Примечание
Чтобы код страны отображался в сеансах аналитики, AppCenter.SetCountryCode
необходимо вызвать перед вызовом AppCenter.Start
.
Вы можете отслеживать собственные пользовательские события с помощью до 20 свойств , чтобы понять взаимодействие между пользователями и приложением.
После запуска пакета SDK используйте метод для TrackEvent()
отслеживания событий с помощью свойств. Вы можете отправить до 200 уникальных имен событий. Кроме того, существует ограничение в 256 символов на имя события и 125 символов на имя свойства события и значение свойства события.
Analytics.TrackEvent("Video clicked", new Dictionary<string, string> {
{ "Category", "Music" },
{ "FileName", "favorite.avi"}
});
Свойства для событий являются полностью необязательными. Если вы хотите просто отслеживать событие, используйте следующий пример:
Analytics.TrackEvent("Video clicked");
Вы можете включить и отключить аналитику Центра приложений во время выполнения. Если отключить его, пакет SDK больше не будет собирать аналитические сведения для приложения.
Analytics.SetEnabledAsync(false);
Чтобы снова включить аналитику Центра приложений, используйте тот же API, но передайте true
в качестве параметра.
Analytics.SetEnabledAsync(true);
Вам не нужно ожидать этого вызова, чтобы обеспечить согласованность других вызовов API (например, IsEnabledAsync
).
Состояние сохраняется в хранилище устройства при запуске приложений.
Вы также можете проверка, включена ли аналитика Центра приложений.
bool isEnabled = await Analytics.IsEnabledAsync();
По умолчанию идентификатор сеанса зависит от жизненного цикла приложения. Если вы хотите управлять началом нового сеанса вручную, выполните следующие действия:
Примечание
Обратите внимание, что каждый вызов API Analytics.StartSession() создает новый сеанс. Если в режиме отслеживания сеансов вручную этот API не будет вызываться, то все журналы отправки будут иметь значение null сеанса.
Примечание
Обратите внимание, что после запуска нового приложения идентификатор сеанса будет повторно создан.
- Вызовите следующий метод перед запуском пакета SDK:
Analytics.EnableManualSessionTracker();
- Затем можно использовать
StartSession
API послеAppCenter.Start
:
Analytics.StartSession();
По умолчанию пакет SDK хранит все журналы событий размером до 10 МБ. Разработчики могут использовать API для увеличения размера хранилища , а пакет SDK будет хранить журналы до тех пор, пока хранилище не будет заполнено.
Если сетевое подключение отсутствует, пакет SDK сохраняет до 10 МБ журналов в локальном хранилище. После заполнения хранилища пакет SDK начнет удалять старые журналы, чтобы освободить место для новых журналов. После того как устройство получит доступ к Интернету, пакет SDK будет отправлять журналы в пакете 50 или через каждые 6 секунд.
Пакет SDK центра приложений отправляет журналы в пакете из 50, и если пакет SDK не содержит 50 журналов для отправки, он по-прежнему будет отправлять журналы через 6 секунд. Одновременно могут отправляться не более трех пакетов.
Пакет SDK центра приложений поддерживает повторные попытки восстановления сети. Ниже приведена логика повторных попыток:
- Максимум 3 попытки на запрос.
- Каждый запрос имеет собственный автомат состояния повторных попыток.
- Все каналы передачи отключаются (до следующего процесса приложения) после того, как один запрос исчерпывает все свои повторные попытки.
Логика отката
- 50 % случайных попыток, первая повторная попытка между 5s и 10s, вторая повторная попытка от 2,5 до 5 минут, последняя попытка от 10 до 20 минут.
- Если сеть переключается из режима "Выкл. вкл." (или с wi-fi на мобильное устройство), состояния повторных попыток сбрасываются, и запросы немедленно повторяются.