Codificar seu aplicativo para experimentação

Depois de criar um projeto e definir variáveis remotas no Partner Center, você estará pronto para atualizar o código em seu aplicativo Plataforma Universal do Windows (UWP) para:

  • Receba valores de variável remota do Partner Center.
  • Usar variáveis remotas para configurar as experiências de aplicativo para seus usuários.
  • Registre eventos no Partner Center que indicam quando os usuários visualizaram seu experimento e executaram uma ação desejada (também chamada de conversão).

Para adicionar esse comportamento ao seu aplicativo, você vai usar APIs fornecidas pelo Microsoft Store Services SDK.

As seções a seguir descrevem o processo geral de obtenção de variações para o experimento e o registro em log de eventos no Partner Center. Depois de codificar seu aplicativo para experimentação, você pode definir um experimento no Partner Center. Para um guia passo a passo que demonstra o processo de criação e execução de um experimento de ponta a ponta, veja Criar e executar seu primeiro experimento com testes A/B.

Observação

Algumas das APIs de experimentação no Microsoft Store Services SDK usam o padrão assíncrono para recuperar dados do Partner Center. Isso significa que parte da execução desses métodos pode ocorrer depois que os métodos são invocados. Portanto, a interface do usuário do seu aplicativo pode permanecer responsiva enquanto as operações são concluídas. O padrão assíncrono requer que seu aplicativo use a palavra-chave async e o operador await ao chamar as APIs, como demonstrado pelos exemplos de código neste artigo. Por convenção, os métodos assíncronos terminam com Async.

Configurar seu projeto

Para começar, instale o Microsoft Store Services SDK no seu computador de desenvolvimento e adicione as referências necessárias ao seu projeto.

  1. Instale o Microsoft Store Services SDK.
  2. Abra o projeto no Visual Studio.
  3. No Gerenciador de Soluções, expanda o nó do seu projeto, clique com botão direito no nó Referências e clique em Adicionar Referência.
  4. No Gerenciador de Referências, expanda Universal do Windows e clique em Extensões.
  5. Na lista de SDKs, marque a caixa de seleção ao lado de Microsoft Engagement Framework e clique em OK.

Observação

Os exemplos de código neste artigo pressupõem que o arquivo de código tem instruções using para os namespaces System.Threading.Tasks e Microsoft.Services.Store.Engagement.

Obter dados de variação e registrar o evento de exibição para o seu experimento

No seu projeto, localize o código do recurso que você deseja modificar no seu experimento. Adicione o código que recupera dados para uma variação, use esses dados para modificar o comportamento do recurso que você está testando e registre o evento de exibição do experimento no serviço de teste A/B no Partner Center.

O código específico necessário dependerá de seu aplicativo, mas o exemplo a seguir demonstra o processo básico. Para obter um exemplo de código completo, consulte Criar e executar seu primeiro experimento com testes 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");
}

As etapas a seguir descrevem as partes importantes desse processo em detalhes.

  1. Declare um objeto StoreServicesExperimentVariation que representa a atribuição de variação atual e um objeto StoreServicesCustomEventLogger que você usará para registrar eventos de exibição e conversão no Partner Center.

    private StoreServicesExperimentVariation variation;
    private StoreServicesCustomEventLogger logger;
    
  2. Declare uma variável de cadeia de caracteres que é atribuída à ID de projeto do experimento que você deseja recuperar.

    Observação

    Você obtém uma ID de projeto ao criar um projeto no Partner Center. A ID do projeto mostrada abaixo é apenas para fins de exemplo.

    private string projectId = "F48AC670-4472-4387-AB7D-D65B095153FB";
    
  3. Obtenha a atribuição de variação em cache atual para o seu experimento chamando o método estático GetCachedVariationAsync e passe a ID do projeto do seu experimento para o método. Esse método retorna um objeto StoreServicesExperimentVariationResult que fornece acesso para a atribuição de variações por meio da propriedade ExperimentVariation.

    var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId);
    variation = result.ExperimentVariation;
    
  4. Verifique a propriedade IsStale para determinar se a atribuição de variação em cache precisa ser atualizada com uma atribuição de variação remota do servidor. Se ela precisar ser atualizada, chame o método estático GetRefreshedVariationAsync para verificar se há uma atribuição de variação atualizada do servidor e atualizar a variação em cache local.

    if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale)
    {
        result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId);
    
        if (result.ErrorCode == StoreServicesEngagementErrorCode.None)
        {
            variation = result.ExperimentVariation;
        }
    }
    
  5. Use os métodos GetBoolean, GetDouble, GetInt32 ou GetString do objeto StoreServicesExperimentVariation para obter os valores para a atribuição de variações. Em cada método, o primeiro parâmetro é o nome da variação que você deseja recuperar (esse é o mesmo nome de uma variação inserida no Partner Center). O segundo parâmetro é o valor padrão que o método deve retornar se não for capaz de recuperar o valor especificado do Partner Center (por exemplo, se não houver conectividade de rede) e uma versão armazenada em cache da variação não estiver disponível.

    O exemplo a seguir usa GetString para obter uma variável denominada buttonText e especifica um valor de variável padrão de Botão Cinza.

    var buttonText = variation.GetString("buttonText", "Grey Button");
    
  6. No seu código, use os valores de variável para modificar o comportamento do recurso que você está testando. Por exemplo, o seguinte código atribui o valor buttonText ao conteúdo de um botão no seu aplicativo. Este exemplo pressupõe que você já definiu esse botão em outro lugar no seu projeto.

    await button.Dispatcher.RunAsync(
        Windows.UI.Core.CoreDispatcherPriority.Normal,
        () =>
        {
            button.Content = buttonText;
        });
    
  7. Por fim, registre o evento de exibição do experimento no serviço de teste A/B no Partner Center. Inicialize o campo logger para um objeto StoreServicesCustomEventLogger e chame o método LogForVariation. Passe o objeto StoreServicesExperimentVariation que representa a atribuição de variação atual (esse objeto fornece contexto sobre o evento para o Partner Center) e o nome do evento de exibição do experimento. Isso deve corresponder ao nome do evento de exibição que você insere para seu experimento no Partner Center. Seu código deve registrar o evento de exibição quando o usuário começa a exibir uma variação que faz parte do seu experimento.

    O exemplo a seguir mostra como registrar um evento de exibição denominado userViewedButton. Neste exemplo, o objetivo do experimento é fazer o usuário clicar em um botão no app. Portanto, o evento de exibição é registrado depois que o app recuperou os dados de variação (nesse caso, o texto do botão) e os atribuiu ao conteúdo do botão.

    if (logger == null)
    {
        logger = StoreServicesCustomEventLogger.GetDefault();
    }
    
    logger.LogForVariation(variation, "userViewedButton");
    

Eventos de conversão de log no Partner Center

Em seguida, adicione o código que registra eventos de conversão no serviço de teste A/B no Partner Center. Seu código deve registrar um evento de conversão quando o usuário atinge um objetivo do seu experimento. O código específico necessário dependerá do seu aplicativo, mas consulte a seguir as etapas gerais. Para obter um exemplo de código completo, consulte Criar e executar seu primeiro experimento com testes A/B.

  1. No código que é executado quando o usuário atinge um objetivo para uma das metas do experimento, chame novamente o método LogForVariation e transmita o objeto StoreServicesExperimentVariation e o nome de um evento de conversão do seu experimento. Isso deve corresponder a um dos nomes de evento de conversão que você insere para seu experimento no Partner Center.

    O exemplo a seguir registra um evento de conversão denominado userClickedButton no manipulador de eventos Click para um botão. Neste exemplo, o objetivo do experimento é fazer o usuário clicar no botão.

    private void button_Click(object sender, RoutedEventArgs e)
    {
        if (logger == null)
        {
            logger = StoreServicesCustomEventLogger.GetDefault();
        }
    
        logger.LogForVariation(variation, "userClickedButton");
    }
    

Próximas etapas

Depois de codificar o experimento no seu app, você estará pronto para as seguintes etapas:

  1. Defina seu experimento no Partner Center. Crie um experimento que define os eventos do modo de exibição, eventos de conversão e variações exclusivas para seu teste A/B.
  2. Execute e gerencie seu experimento no Partner Center.