共用方式為


為應用程式編碼以進行實驗

合作夥伴中心建立專案並定義遠端變數之後,您就可以將通用 Windows 平台 (UWP) 應用程式中的程式碼更新為:

  • 從合作夥伴中心接收遠端變數值。
  • 使用遠端變數為您的使用者設定應用程式體驗。
  • 將事件記錄至合作夥伴中心,指出使用者何時已檢視實驗並執行所需的動作 (也稱為「轉換」)。

若要將此行為新增至您的應用程式,您將使用 Microsoft Store Services SDK 所提供的 API。

下列各節說明取得實驗變化的一般程序,並將事件記錄到合作夥伴中心。 在為應用程式編碼以進行實驗之後,您可以在合作夥伴中心定義實驗。 如需示範建立和執行實驗之端對端程序的逐步解說,請參閱使用 A/B 測試建立並執行您的第一個實驗

注意

Microsoft Store Services SDK 中的一些實驗 API 使用非同步模式從合作夥伴中心擷取資料。 這表示在叫用方法之後,可能會執行這些方法的該部分,讓應用程式 UI 能夠在作業完成時維持回應。 非同步模式需要您的應用程式在呼叫 API 時使用 async 關鍵字和 await 運算子,如本文中的程式碼範例所示。 按照慣例,非同步方法以 Async 結尾。

設定專案

若要開始使用,請在開發電腦機上安裝 Microsoft Store Services SDK,並將必要的參考新增至您的專案。

  1. 安裝 Microsoft Store Services SDK
  2. 在 Visual Studio 中,開啟您的專案。
  3. 在 [方案總管] 中,展開專案節點,以滑鼠右鍵按一下 [參考],然後選取 [新增參考]
  4. 在 [參考管理員] 中,展開 [通用 Windows],然後按一下 [延伸模組]
  5. 在 SDK 清單中,選取 [Microsoft Engagement Framework] 旁的核取方塊,然後按一下 [確定]

注意

本文中的程式碼範例假設您的程式碼檔案具有 System.Threading.TasksMicrosoft.Services.Store.Engagement 命名空間的 using 陳述式。

取得變化資料並記錄實驗的檢視事件

在您的專案中,找出您要在實驗中修改之功能的程序碼。 新增程式碼以擷取變化的資料,使用此資料來修改您要測試的功能行為,然後將實驗的檢視事件記錄到合作夥伴中心的 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");
}

下列步驟將詳細說明此程序的重要部分。

  1. 宣告 StoreServicesExperimentVariation 物件來代表目前的變化指派,以及 StoreServicesCustomEventLogger 物件,這將用來將檢視和轉換事件記錄到合作夥伴中心的。

    private StoreServicesExperimentVariation variation;
    private StoreServicesCustomEventLogger logger;
    
  2. 宣告指派給您要擷取之實驗專案識別碼的字串變數。

    注意

    當您在合作夥伴中心建立專案時,您會取得專案識別碼。 下列專案識別碼僅供範例之用。

    private string projectId = "F48AC670-4472-4387-AB7D-D65B095153FB";
    
  3. 藉由呼叫靜態 GetCachedVariationAsync 方法來取得實驗目前快取的變化指派,並將實驗的專案識別碼傳遞至該方法。 這個方法會傳回 StoreServicesExperimentVariationResult 物件,該物件透過 ExperimentVariation 屬性提供對變化指派的存取。

    var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId);
    variation = result.ExperimentVariation;
    
  4. 檢查 IsStale 屬性,以判斷是否需要使用伺服器的遠端變化指派來重新整理快取的變化指派。 如果需要重新整理,請呼叫靜態 GetRefreshedVariationAsync 方法來檢查伺服器是否有更新的變化指派,並重新整理本機快取的變化。

    if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale)
    {
        result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId);
    
        if (result.ErrorCode == StoreServicesEngagementErrorCode.None)
        {
            variation = result.ExperimentVariation;
        }
    }
    
  5. 使用 StoreServicesExperimentVariation 物件的 GetBooleanGetDoubleGetInt32GetString 方法來取得變化指派的值。 在每個方法中,第一個參數是您想要擷取的變化名稱 (這與您在合作夥伴中心輸入的變化名稱相同)。 第二個參數是如果方法無法從合作夥伴中心擷取指定值 (例如,如果沒有網路連線),而且變化沒有可用的快取版本時,應該傳回的預設值。

    下列範例使用 GetString 來取得名為 buttonText 的變數,並指定灰色按鈕的預設變數值。

    var buttonText = variation.GetString("buttonText", "Grey Button");
    
  6. 在您的程式碼中,使用變數值來修改您要測試的功能行為。 例如,下列程式碼會將 buttonText 值指派給應用程式中按鈕的內容。 此範例假設您已在專案中的其他地方定義此按鈕。

    await button.Dispatcher.RunAsync(
        Windows.UI.Core.CoreDispatcherPriority.Normal,
        () =>
        {
            button.Content = buttonText;
        });
    
  7. 最後,將實驗的檢視事件記錄至合作夥伴中心的 A/B 測試服務。 將 logger 功能變數初始化為 StoreServicesCustomEventLogger 物件,並呼叫 LogForVariation 方法。 傳遞代表目前之變化指派的 StoreServicesExperimentVariation 物件 (此物件會將事件的內容提供給合作夥伴中心),以及實驗的檢視事件名稱。 這必須符合您在合作夥伴中心針對實驗輸入的檢視事件名稱。 當使用者開始檢視屬於實驗一部分的變化時,您的程式碼應該會記錄檢視事件。

    下列範例示範如何記錄名為 userViewedButton 的檢視事件。 在此範例中,實驗的目標是讓使用者按一下應用程式中的按鈕,而在應用程式擷取變化資料 (在本例中為按鈕文字) 之後記錄檢視事件,並將它指派給按鈕的內容。

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

將記錄轉換事件記錄到合作夥伴中心

接下來,新增程式碼,以將轉換事件記錄到合作夥伴中心的 A/B 測試服務。 當使用者達到實驗目標時,您的程式碼應該會記錄轉換事件。 您需要的特定程式碼取決於您的應用程式,但以下是一般步驟。 如需完整的程式碼範例,請參閱使用 A/B 測試建立並執行您的第一個實驗

  1. 在使用者達到實驗其中一個目標時執行的程式碼中,再次呼叫 LogForVariation 方法,並傳遞 StoreServicesExperimentVariation 物件和實驗轉換事件的名稱。 這必須符合您在合作夥伴中心為實驗輸入的其中一個轉換事件名稱。

    下列範例會記錄按鈕 Click 事件處理常式中名為 userClickedButton 的轉換事件。 在此範例中,實驗的目標是要讓使用者按下按鈕。

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

下一步

在應用程式中撰寫實驗程式碼之後,您就可以進行下列步驟:

  1. 在合作夥伴中心定義您的實驗。 建立實驗,以定義 A/B 測試的檢視事件、轉換事件和唯一變化。
  2. 在合作夥伴中心執行和管理您的實驗