Код приложения для экспериментирования
После создания проекта и определения удаленных переменных в Центре партнеров можно обновить код в приложении универсальная платформа Windows (UWP):
- Получение значений удаленной переменной из Центра партнеров.
- Используйте удаленные переменные для настройки взаимодействия с приложениями для пользователей.
- Журнал событий в Центр партнеров, указывающий, когда пользователи просматривали эксперимент и выполняли требуемое действие (также называемое преобразованием).
Чтобы добавить это поведение в приложение, вы будете использовать API, предоставляемые пакетом SDK служб Microsoft Store.
В следующих разделах описывается общий процесс получения вариантов для событий эксперимента и ведения журнала в Центре партнеров. После написания кода приложения для экспериментирования можно определить эксперимент в Центре партнеров. Пошаговое руководство, демонстрирующее комплексный процесс создания и запуска эксперимента, см. в статье "Создание и запуск первого эксперимента с помощью A/B- тестирования".
Примечание.
Некоторые API экспериментирования в пакете SDK служб Microsoft Store используют асинхронный шаблон для получения данных из Центра партнеров. Это означает, что часть выполнения этих методов может происходить после вызова методов, поэтому пользовательский интерфейс вашего приложения может оставаться адаптивным во время выполнения операций. Асинхронный шаблон требует, чтобы приложение использовало асинхронное ключевое слово и оператор await при вызове API, как показано в примерах кода в этой статье. По соглашению асинхронные методы заканчиваются асинхронными методами.
Настройка проекта
Чтобы приступить к работе, установите пакет SDK служб Microsoft Store на компьютере разработки и добавьте необходимые ссылки на проект.
- Установите пакет SDK служб Microsoft Store.
- Откройте проект в Visual Studio.
- В Обозреватель решений разверните узел проекта, щелкните правой кнопкой мыши ссылки и нажмите кнопку "Добавить ссылку".
- В диспетчере ссылок разверните универсальные окна и щелкните "Расширения".
- В списке пакетов SDK установите флажок рядом с Microsoft Engagement Framework и нажмите кнопку "ОК".
Примечание.
Примеры кода в этой статье предполагают, что в файле кода используются инструкции для пространств имен System.Threading.Tasks и Microsoft.Services.Store.Engagement.
Получение данных вариантов и ведение журнала события представления для эксперимента
В проекте найдите код для функции, которую вы хотите изменить в эксперименте. Добавьте код, который извлекает данные для варианта, используйте эти данные для изменения поведения проверяемой функции, а затем зайдите в журнал события представления для эксперимента в службу тестирования A/B в Центре партнеров.
Необходимый код будет зависеть от приложения, но в следующем примере демонстрируется базовый процесс. Полный пример кода см. в статье "Создание и запуск первого эксперимента с помощью тестирования A/B".
private StoreServicesExperimentVariation variation;
private StoreServicesCustomEventLogger logger;
// Assign this variable to the project ID for your experiment from Dev Center.
// The project ID shown below is for example purposes only.
private string projectId = "F48AC670-4472-4387-AB7D-D65B095153FB";
private async Task InitializeExperiment()
{
// Get the current cached variation assignment for the experiment.
var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId);
variation = result.ExperimentVariation;
// Refresh the cached variation assignment if necessary.
if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale)
{
result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId);
if (result.ErrorCode == StoreServicesEngagementErrorCode.None)
{
variation = result.ExperimentVariation;
}
}
// Get the remote variable named "buttonText" and assign the value
// to the button.
var buttonText = variation.GetString("buttonText", "Grey Button");
await button.Dispatcher.RunAsync(
Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
button.Content = buttonText;
});
// Log the view event named "userViewedButton" to Dev Center.
if (logger == null)
{
logger = StoreServicesCustomEventLogger.GetDefault();
}
logger.LogForVariation(variation, "userViewedButton");
}
В следующих шагах подробно описаны важные части этого процесса.
Объявите объект StoreServicesExperimentVariation , представляющий текущее назначение вариантов и объект StoreServicesCustomEventLogger , который будет использоваться для просмотра событий просмотра и преобразования в Центр партнеров.
private StoreServicesExperimentVariation variation; private StoreServicesCustomEventLogger logger;
Объявите строковую переменную, назначенную идентификатору проекта для полученного эксперимента.
Примечание.
При создании проекта в Центре партнеров вы получите идентификатор проекта. Приведенный ниже идентификатор проекта предназначен только для целей.
private string projectId = "F48AC670-4472-4387-AB7D-D65B095153FB";
Получите текущее назначение кэшированных вариантов для эксперимента, вызвав статический метод GetCachedVariationAsync и передав идентификатор проекта для эксперимента методу. Этот метод возвращает объект StoreServicesExperimentVariationResult , предоставляющий доступ к назначению вариантов с помощью свойства ExperimentVariation .
var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId); variation = result.ExperimentVariation;
Проверьте свойство IsStale, чтобы определить, нужно ли обновлять кэшированное назначение вариантов с помощью удаленного назначения вариантов с сервера. Если требуется обновить его, вызовите статический метод GetRefreshedVariationAsync , чтобы проверить наличие обновленного назначения вариантов с сервера и обновить локальный кэшированный вариант.
if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale) { result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId); if (result.ErrorCode == StoreServicesEngagementErrorCode.None) { variation = result.ExperimentVariation; } }
Используйте методы GetBoolean, GetDouble, GetInt32 или GetString объекта StoreServicesExperimentVariation, чтобы получить значения для назначения вариантов. В каждом методе первый параметр — это имя варианта, который требуется извлечь (это то же имя варианта, который вы вводите в Центре партнеров). Второй параметр — это значение по умолчанию, которое метод должен возвращать, если он не может получить указанное значение из Центра партнеров (например, если сетевого подключения нет), а кэшированная версия варианта недоступна.
В следующем примере метод GetString используется для получения переменной с именем buttonText и указывает значение переменной по умолчанию серой кнопки.
var buttonText = variation.GetString("buttonText", "Grey Button");
В коде используйте значения переменных для изменения поведения проверяемой функции. Например, следующий код назначает значение buttonText содержимому кнопки в приложении. В этом примере предполагается, что вы уже определили эту кнопку в другом месте проекта.
await button.Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, () => { button.Content = buttonText; });
Наконец, зайдите в журнал события представления для эксперимента в службу тестирования A/B в Центре партнеров. Инициализируйте
logger
поле в объект StoreServicesCustomEventLogger и вызовите метод LogForVariation . Передайте объект StoreServicesExperimentVariation, представляющий текущее назначение вариантов (этот объект предоставляет контекст события в Центр партнеров) и имя события представления для эксперимента. Это должно соответствовать имени события представления, введенного для эксперимента в Центре партнеров. Код должен регистрировать событие представления, когда пользователь начинает просматривать вариант, который является частью эксперимента.В следующем примере показано, как регистрировать событие представления с именем userViewedButton. В этом примере цель эксперимента заключается в том, чтобы пользователь нажимал кнопку в приложении, поэтому событие представления регистрируется после того, как приложение извлекло данные вариантов (в данном случае текст кнопки) и назначил его содержимому кнопки.
if (logger == null) { logger = StoreServicesCustomEventLogger.GetDefault(); } logger.LogForVariation(variation, "userViewedButton");
События преобразования журналов в Центр партнеров
Затем добавьте код, который регистрирует события преобразования в службу тестирования A/B в Центре партнеров. Код должен регистрировать событие преобразования, когда пользователь достигает цели для эксперимента. Необходимый код будет зависеть от приложения, но ниже приведены общие действия. Полный пример кода см. в статье "Создание и запуск первого эксперимента с помощью тестирования A/B".
В коде, который выполняется, когда пользователь достигает цели для одной из целей эксперимента, вызовите метод LogForVariation еще раз и передайте объект StoreServicesExperimentVariation и имя события преобразования для эксперимента. Это должно соответствовать одному из имен событий преобразования, которые вы вводите для эксперимента в Центре партнеров.
В следующем примере регистрируется событие преобразования с именем userClickedButton из обработчика событий Click для кнопки. В этом примере цель эксперимента — получить пользователя, чтобы нажать кнопку.
private void button_Click(object sender, RoutedEventArgs e) { if (logger == null) { logger = StoreServicesCustomEventLogger.GetDefault(); } logger.LogForVariation(variation, "userClickedButton"); }
Следующие шаги
После написания эксперимента в приложении вы можете выполнить следующие действия:
- Определите эксперимент в Центре партнеров. Создайте эксперимент, определяющий события представления, события преобразования и уникальные варианты для теста A/B.
- Запустите эксперимент и управляйте ими в Центре партнеров.