建立自訂應用程式促銷活動

除了在 Windows 應用程式上執行的廣告行銷活動之外,您還可以利用其他管道來推廣您的應用程式。 例如,您可以使用第三方應用程式行銷提供者來推廣您的應用程式,或者您可以在社交媒體網站上張貼您應用程式的連結。 這些活動稱為自訂行銷活動。。

如果您為應用程式執行自訂行銷活動,可以針對每個自訂行銷活動建立不同的 URL,每個 URL 包含不同的行銷活動識別碼,來追蹤每個行銷活動的相對績效。 當一位執行 Windows 10 的客戶按一下包含行銷活動識別碼的 URL 時,Microsoft 會將此點擊與相應的自訂行銷活動相關聯,並在合作夥伴中心將這些資料提供給您。

重要

此資料只會追蹤使用 Windows 10 的客戶。 使用其他作業系統的客戶仍然可以透過連結查看應用程式清單,但不會包含這些客戶活動的資料。

自訂行銷活動有兩種主要類型: 應用程式 Store 清單的頁面檢視數,以及轉換數。 轉換是由客戶從包含自訂行銷活動識別碼的 URL 檢視您應用程式的 Store 清單頁面所產生的應用程式下載。 如需轉換的詳細資訊,請參閱本主題中的瞭解應用程式下載數如何符合轉換資格

您可以透過下列方式擷取應用程式的自訂行銷活動績效資料:

  • 您可以從 [下載數] 報表中的 [依行銷活動識別碼分類的應用程式頁面檢視數與轉換數] 和 [行銷活動轉換總數] 圖表,檢視應用程式或附加元件的頁面檢視數和轉換數。
  • 如果您的應用程式是通用 Windows 平台 (UWP) 應用程式,可以使用 Windows SDK 中的 API,以程式設計方式擷取導致轉換的自訂行銷活動識別碼。

自訂行銷活動案例範例

假設遊戲開發人員已完成建置新遊戲,並想要推廣給現有遊戲玩家。 她在 Facebook 頁面上發佈新遊戲版本的公告,包括遊戲 Store 清單的連結。 許多玩家也在推特上關注她,所以她也會在推特上發佈公告,並連結到遊戲的 Store 清單。

為了追蹤每個促銷通路的成效,開發人員會建立遊戲 Store 清單的兩個 URL 變體:

  • 張貼到 Facebook 頁面的 URL 包含自訂行銷活動識別碼 my-facebook-campaign

  • 在 Twitter 張貼的 URL 包含自訂行銷活動識別碼 my-twitter-campaign

當 Facebook 和 Twitter 的粉絲按一下 URL 時,Microsoft 會追蹤每次點擊,並將其與對應的自訂行銷活動產生關聯。 遊戲後續符合資格的下載及任何附加元件的購買,均與自訂行銷活動關聯,並回報為轉換數。

瞭解下載數如何符合轉換資格

自訂行銷活動轉換是指當客戶點擊透過自訂行銷活動宣傳的 URL 而產生的下載。 在 [下載數] 報表中,對於符合 [依行銷活動識別碼分類的應用程式頁面檢視數與轉換數] 和 [行銷活動轉換總數] 圖表的轉換,以及符合以程式設計方式擷取行銷活動識別碼的轉換,有不同的案例。

下載數報表中符合資格的轉換

下列案例符合 [下載數] 報表中 [行銷活動識別碼分類的應用程式頁面檢視數與轉換數] 和 [行銷活動轉換總數] 圖表的轉換資格:

  • 經過或沒有經過認證過的 Microsoft 帳戶的客戶點擊了包含自訂行銷活動識別碼的應用程式 URL,並被重新導向至該應用程式在 Store 的清單頁面。 然後,同一位客戶在首次按下具有自訂行銷活動識別碼的 Microsoft Store URL 後的 24 小時內購買了該應用程式。

  • 如果客戶在與按下具有自訂行銷活動識別碼的 URL 不同的裝置上取得應用程式,則只有在客戶登入相同的 Microsoft 帳戶時,才會計算轉換。

注意

對於被視為自訂行銷活動轉換的應用程式下載,購買該應用程式中的任何附加元件也會視為同一自訂行銷活動的轉換。

以程式設計方式擷取行銷活動識別碼時,確定轉換是否符合資格

若要在以程式設計方式擷取與應用程式相關聯的行銷活動識別碼時確認是否符合轉換資格,必須符合下列條件:

  • 在執行 Windows 10 版本 1607 或更新版本的裝置上:客戶 (無論是否登入已辨識的 Microsoft 帳戶) 案一下包含自訂行銷活動識別碼的 URL,並重新導向至應用程式的 Store 清單頁面。 客戶按一下 URL 檢視 Store 清單時,取得應用程式。

  • 在執行 Windows 10,版本 1511 或更早版本的裝置上:客戶 (必須使用已辨識的 Microsoft 帳戶登入) 按一下包含自訂行銷活動識別碼的 URL,並被重新導向至應用程式的 Store 清單頁面。 客戶按一下 URL 檢視 Store 清單時,取得應用程式。 在這些版本的 Windows 10 或 Windows 11 上,使用者必須使用已辨識的 Microsoft 帳戶登入,才能在以程式設計方式擷取行銷活動識別碼時符合轉換資格。

注意

若客戶離開 Store 清單頁面,但在 24 小時內返回該頁面 (無論是在同一裝置上,或在使用相同 Microsoft 帳戶登入的不同裝置上),並取得應用程式,則該行為符合 [下載數] 報表中的 [依行銷活動識別碼分類的應用程式頁面檢視數與轉換數] 以及 [行銷活動轉換總數] 圖表中的轉換定義。 不過,如果您以程式設計方式擷取行銷活動識別碼,這不符合轉換資格。

將自訂行銷活動識別碼內嵌至您應用程式的 Microsoft Store 頁面 URL

若要為具有自訂行銷活動識別碼的應用程式建立 Microsoft Store 頁面 URL:

  1. 為您的自訂行銷活動建立識別碼字串。 此字串最多可包含 100 個字元,不過我們建議您定義容易識別的簡短行銷活動識別碼。

注意

當其他開發人員檢視其應用程式的 [下載數] 報表 時,可能會看到行銷活動識別碼字串。 當客戶按一下您的自訂行銷活動識別碼來進入 Store,並在相同的工作階段內購買另一個開發人員的應用程式,進而將該轉換歸結到您的行銷活動識別碼時,就會發生這種情況。 該開發人員會在按一下您的行銷活動識別碼之後,看到他們自己的應用程式有多少次轉換,包括行銷活動識別碼的名稱,但他們在按兩下您的行銷活動識別碼之後,不會看到有多少使用者購買您自己的應用程式 (或來自任何其他開發人員的應用程式) 的任何資料。

  1. 取得 HTML 或通訊協定格式的應用程式 Store 清單連結。

    • 如果您想要客戶在任何作業系統的瀏覽器中瀏覽至應用程式的網頁型 Store 清單,請使用 HTML URL。 在 Windows 裝置上,應用程式商店應用程式也會啟動並顯示您的應用程式清單。 此 URL 格式為 https://www.microsoft.com/store/apps/*your app ID*。 例如,Skype 的 HTML URL 是 https://www.microsoft.com/store/apps/9wzdncrfj364。 您可以在應用程式身分識別頁面上找到此 URL。

    • 如果您要從已安裝 UWP 應用程式的裝置或電腦上執行的其他 Windows 應用程式,或當您知道客戶位於支援 Microsoft Store 的裝置上時,請使用通訊協定格式。 此連結將直接移至您應用程式的 Store 清單,而不需開啟瀏覽器。 此 URL 格式為 ms-windows-store://pdp/?PRODUCTID=*your app id*。 例如,Skype 的通訊協定 URL 是 ms-windows-store://pdp/?PRODUCTID=9wzdncrfj364

  2. 將以下字串附加到您應用程式的 URL 結尾:

    • 若為 HTML 格式 URL,請附加 ?cid=*my custom campaign ID*。 例如,如果 Skype 引進具有 custom_campaign 值的行銷活動識別碼,則包含行銷活動識別碼的新 URL 會是:https://www.microsoft.com/store/apps/skype/9wzdncrfj364?cid=custom\_campaign

    • 針對通訊協定格式 URL,請附加 &cid=*my custom campaign ID*。 例如,如果 Skype 引進具有 custom_campaign 值的行銷活動識別碼,則包含行銷活動識別碼的新通訊協定 URL 會是:ms-windows-store://pdp/?PRODUCTID=9wzdncrfj364&cid=custom\_campaign

以程式設計方式擷取應用程式的自訂行銷活動識別碼

如果您的應用程式是 UWP 應用程式,可以使用 Windows SDK 中的 API,以程式設計方式擷取與應用程式取得相關聯的自訂行銷活動識別碼。 這些 API 可讓許多分析和獲利案例成為可能。 例如,您可以在透過 Facebook 行銷活動探索應用程式之後,找出目前使用者是否已取得您的應用程式,然後據以自訂應用程式體驗。 或者,如果您使用第三方應用程式行銷提供者,您可以將資料傳回給提供者。

只有當客戶按一下具有內嵌行銷活動識別碼的URL、檢視應用程式的 Microsoft Store 頁面,然後取得應用程式且不離開 Store 清單頁面時,這些 API 才會傳回行銷活動識別碼字串。 如果使用者離開頁面,然後稍後傳回並取得應用程式,則使用這些 API 時,會不符合轉換資格

視您的應用程式鎖定的 Windows 版本而定,可以使用不同的 API:

  • 在 Windows 10 版本 1607 或更新版本中:請使用 Windows.Services.Store 命名空間中的 StoreContext 類別。 使用此 API 時,您可以擷取任何符合資格的下載,無論使用者是否使用已辨識的 Microsoft 帳戶登入,都可以獲取自訂行銷活動識別碼。

  • Windows 10 版本 1511 或更早版本:使用 Windows.ApplicationModel.Store 命名空間中的 CurrentApp 類別。 使用這個 API 時,只能擷取使用者使用已辨識的 Microsoft 帳戶登入的符合資格下載,才能獲得自訂行銷活動識別碼。

注意

雖然 Windows.ApplicationModel.Store 命名空間適用於所有版本的 Windows 10 或 Windows 11,但如果您的應用程式以 Windows 10 版本 1607 或更新版本為目標,建議您在 Windows.Services.Store 命名空間中使用 API。 如需這些命名空間之間差異的詳細資訊,請參閱應用程式內購買和試用版。 下列程式碼範例示範如何建構程式碼,以在相同的專案中使用這兩個 API。

程式碼範例

下列程式碼範例示範如何擷取自訂行銷活動識別碼。 這個範例會使用 Windows.Services.StoreWindows.ApplicationModel.Store 命名空間中的這兩組 API,方法是使用版本調調適型程式碼。 遵循這個流程,您的程式碼可以在任何版本的 Windows 10 或 Windows 11 上執行。 若要使用此程式碼,專案的目標作業系統版本必須是 Windows 10 Anniversary Edition (10.0;組建 14394) 或更新版本,儘管最低支援的作業系統版本可以是較早的版本。

// This example assumes the code file has using statements for
// System.Linq, System.Threading.Tasks, Windows.Data.Json,
// and Windows.Services.Store.
public async Task<string> GetCampaignId()
{
    // Use APIs in the Windows.Services.Store namespace if they are available
    // (the app is running on a device with Windows 10, version 1607, or later).
    if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(
         "Windows.Services.Store.StoreContext"))
    {
        StoreContext context = StoreContext.GetDefault();

        // Try to get the campaign ID for users with a recognized Microsoft account.
        StoreProductResult result = await context.GetStoreProductForCurrentAppAsync();
        if (result.Product != null)
        {
            StoreSku sku = result.Product.Skus.FirstOrDefault(s => s.IsInUserCollection);

            if (sku != null)
            {
                return sku.CollectionData.CampaignId;
            }
        }

        // Try to get the campaign ID from the license data for users without a
        // recognized Microsoft account.
        StoreAppLicense license = await context.GetAppLicenseAsync();
        JsonObject json = JsonObject.Parse(license.ExtendedJsonData);
        if (json.ContainsKey("customPolicyField1"))
        {
            return json["customPolicyField1"].GetString();
        }

        // No campaign ID was found.
        return String.Empty;
    }
    // Fall back to using APIs in the Windows.ApplicationModel.Store namespace instead
    // (the app is running on a device with Windows 10, version 1577, or earlier).
    else
    {
#if DEBUG
        return await Windows.ApplicationModel.Store.CurrentAppSimulator.GetAppPurchaseCampaignIdAsync();
#else
        return await Windows.ApplicationModel.Store.CurrentApp.GetAppPurchaseCampaignIdAsync() ;
#endif
    }
}

此程式碼會執行下列操作:

  1. 首先,它會檢查目前裝置上是否有 Windows.Services.Store 命名空間中的 StoreContext 類別 (這表示裝置正在執行 Windows 10 版本 1607 或更新版本)。 如果是,程式碼會繼續使用此類別。

  2. 接下來,它會嘗試取得目前使用者已辨識 Microsoft 帳戶之案例的自訂行銷活動識別碼。 若要這樣做,程式碼會取得代表目前應用程式 SKU 的 StoreSku 物件,然後它會存取 CampaignId 屬性來擷取行銷活動識別碼,如果有的話。

  3. 然後,程式碼會嘗試擷取目前使用者沒有已辨識 Microsoft 帳戶情況的行銷活動識別碼。 在此情況下,行銷活動識別碼會內嵌在應用程式授權中。 程式碼會使用 GetAppLicenseAsync 方法來擷取授權,然後剖析授權的 JSON 內容,以取得名為 customPolicyField1 的金鑰值。 此值包含行銷活動識別碼。

  4. 如果 Windows.Services.Store 命名空間中的 StoreContext 類別無法使用,程式代碼會回復為使用 Windows.ApplicationModel.Store 命名空間中的 GetAppPurchaseCampaignIdAsync 方法來擷取自訂行銷活動識別碼 (此命名空間適用於所有 Windows 10 或 Windows 11 版本)。 請注意,使用此方法時,您只能擷取自訂行銷活動識別碼,以取得使用者已辨識 Microsoft 帳戶的符合資格的下載

在 Proxy 檔案中指定 Windows.ApplicationModel.Store 命名空間的行銷活動識別碼

Windows.ApplicationModel.Store 命名空間包含 CurrentAppSimulator,這是一個特殊類別,可模擬 Store 作業,以在將應用程式提交至 Store 之前測試您的程式碼。 這個類別會從名為 Windows.StoreProxy.xml 檔案的本機檔案擷取資料。 上述程式碼範例示範如何在專案的偵錯和非偵錯程式碼中使用 CurrentAppCurrentAppSimulator。 若要在偵錯環境中測試此程式碼,請將 AppPurchaseCampaignId 項目新增至開發電腦上的 WindowsStoreProxy.xml 檔案,如下列範例所示。 當您執行應用程式時,GetAppPurchaseCampaignIdAsync 方法一律會傳回此值。

<CurrentApp>
    ...
    <AppPurchaseCampaignId>your custom campaign ID</AppPurchaseCampaignId>
</CurrentApp>

Windows.Services.Store 命名空間不提供類別,您可以在測試期間用來模擬授權資訊。 相反地,您必須將應用程式發佈至 Store,並將該應用程式下載至您的開發裝置,以使用其授權進行測試。 如需詳細資訊,請參閱應用程式內購買和試用版

測試自訂行銷活動

在推廣自訂行銷活動 URL 之前,建議您執行下列動作來測試自訂行銷活動:

  1. 登入測試裝置上的 Microsoft 帳戶。

  2. 按一下自訂行銷活動 URL。 請確定已進入您的應用程式頁面,然後關閉 UWP 應用程式或瀏覽器頁面。

  3. 按下 URL 數次,在每次瀏覽應用程式頁面之後,關閉 UWP 應用程式或瀏覽器頁面。 在其中一次瀏覽應用程式頁面時,讓應用程式產生轉換。 計算您按 URL 的總次數。

  4. 請確認在 [下載數] 報表中的 [依行銷活動識別碼分類的應用程式頁面檢視數與轉換數] 和 [行銷活動轉換總數] 圖表中是否顯示預期的瀏覽量和轉換資料,並測試應用程式的程式碼,以確認它是否可以成功地使用上述的 API 擷取行銷活動識別碼。