共用方式為


編寫實驗用的應用程式程式碼

建立專案並在合作夥伴中心中定義遠端變數之後,您就可以將通用 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] 旁的複選框,然後按一下 [OK]

備註

本文中的程式代碼範例假設您的程式代碼檔案已針對 System.Threading.TasksMicrosoft.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");
}

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

  1. 宣告 StoreServicesExperimentVariation 物件,此物件代表當前的變體分配,以及您將用於將瀏覽和轉換事件記錄到合作夥伴中心的 StoreServicesCustomEventLogger 物件。

    private StoreServicesExperimentVariation variation;
    private StoreServicesCustomEventLogger logger;
    
  2. 宣告一個字串變數,並將其指派給您想要擷取的實驗的專案 ID 和編號

    備註

    當您 在合作夥伴中心建立專案時,取得專案標識碼。 如下所示的專案標識碼僅供範例之用。

    private string projectId = "F48AC670-4472-4387-AB7D-D65B095153FB";
    
  3. 為取得實驗目前的快取變化分派,請呼叫靜態 GetCachedVariationAsync 方法,並將實驗的專案 ID 傳遞至該方法。 此方法會傳回 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. 使用 getBooleanGetDoubleGetInt32GetString StoreServicesExperimentVariation 物件的 GetString 方法來取得變化指派的值。 在每個方法中,第一個參數是您想要擷取的變化名稱(這與您在合作夥伴中心輸入的變化名稱相同)。 第二個參數是當方法無法從合作夥伴中心擷取指定的值時所返回的預設值(例如在沒有網路連線的情況下),且快取版本的值不可用。

    下列範例會使用 GetString 來取得名為 buttonText 的變數,並指定 Grey Button的預設變數值。

    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. 在合作夥伴中心執行和管理實驗