Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Центр приложений Visual Studio был прекращен 31 марта 2025 г., за исключением функций аналитики и диагностики, которые будут поддерживаться до 30 июня 2026 г. Подробнее.
Аналитика Центра приложений помогает понять поведение пользователей и взаимодействие с клиентами для улучшения приложения. Пакет SDK автоматически записывает количество сеансов и свойства устройства, такие как модель, версия ОС и т. д. Вы можете определить собственные пользовательские события для измерения важных для вас элементов. Все данные, полученные на портале Центра приложений, доступны для анализа данных.
Если вы еще не настроили пакет SDK в приложении, следуйте разделу "Начало работы с WPF/WinForms" или "Начало работы с UWP/WinUI " (на основе платформы).
Инструкции на этой странице работают для UWP (включая Xamarin.Forms и WinUI), WPF и WinForms.
Сведения о сеансе и устройстве
После добавления Аналитики Центра приложений в приложение и запуска пакета SDK он автоматически отслеживает сеансы и свойства устройства, такие как версия ОС, модель и т. д.
Замечание
В приложениях WinUI количество сеансов может быть ниже, чем в приложениях UWP из-за особенностей жизненного цикла.
Код страны
Код страны автоматически не сообщается пакетом SDK. Если вы хотите сообщить об этом вручную, следуйте инструкциям для вашей платформы ниже.
UWP (Универсальная платформа Windows)
- Убедитесь, что для вашего приложения включена функция геолокации.
- Получите ключ проверки подлинности карт 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
Так как платформы 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();
- Затем вы можете использовать
StartSessionAPI послеAppCenter.Start.
Analytics.StartSession();
Размер локального хранилища
По умолчанию пакет SDK сохраняет все журналы событий до 10 МБ. Разработчики могут использовать API для увеличения размера хранилища , и пакет SDK будет хранить журналы до тех пор, пока хранилище не будет заполнено.
Нет доступа к Интернету
Если сетевое подключение отсутствует, пакет SDK сохраняет до 10 МБ журналов в локальном хранилище. После полного завершения хранилища пакет SDK начнет удалять старые журналы, чтобы освободить место для новых журналов. Когда устройство восстанавливает доступ к Интернету, SDK будет отправлять журналы пакетом по 50 или каждые 6 секунд.
Журналы событий пакетной обработки
SDK Центра приложений отправляет журналы партиями по 50, и если в наличии нет 50 журналов для отправки, он все равно отправит журналы через 6 секунд. В параллельном режиме может быть отправлено не более трех пакетов.
Логика повторной попытки и постепенного отступления
Пакет SDK для Центра приложений поддерживает повторные попытки восстановления при возникновении ошибок сети, доступных для восстановления. Ниже приведена логика повторных попыток:
- Максимум 3 попытки на запрос.
- Каждый запрос имеет собственный компьютер состояния повтора.
- Все каналы передачи отключены (до следующего процесса приложения) после того, как один запрос исчерпывает все его повторные попытки.
Логика резервного копирования
- 50% рандомизация, первая попытка перезапуска от 5 до 10 секунд, вторая попытка перезапуска от 2,5 до 5 минут, последняя попытка от 10 до 20 минут.
- Если сетевые переключатели переключаются с выключенного состояния на включенное (или с wi-fi на мобильные устройства), состояния повторных попыток сбрасываются, и запросы повторяются немедленно.