共用方式為


建立自定義應用程式促銷活動

除了為您的應用程式建立一個將在 Windows 應用程式中執行的 廣告活動 之外,您也可以使用其他頻道來宣傳您的應用程式。 例如,您可以使用第三方應用程式行銷提供者來推廣您的應用程式,或者您可能會在社交媒體網站上張貼應用程序的連結。 這些活動稱為 自定義運動

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

重要

此數據只會追蹤 Windows 10 上的客戶。 仍舊使用其他操作系統的客戶仍然可以點擊您應用程式清單的連結,但那些客戶活動的數據不會被包含。

自定義行銷活動有兩種主要數據類型:app 市集清單的 頁面檢視轉換。 轉換是指當客戶從包含自定義行銷活動標識碼的 URL 檢視您應用程式的商店頁面後進行的下載行為。 如需轉換的詳細資訊,請參閱本主題中的 瞭解應用程式收購如何被認定為轉換

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

  • 您可以從 應用程式頁面瀏覽量和轉化數據,或依行銷活動標識子,並透過 總計活動轉化 圖表,在 獲取報告中檢視應用程式或附加元件的數據。
  • 如果您的 app 是通用 Windows 平臺 (UWP) 應用程式,您可以使用 Windows SDK 中的 API,以程式設計方式擷取導致轉換的自定義行銷活動識別符。

自定義行銷活動案例範例

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

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

  • 她將張貼到Facebook頁面的URL包含自定義行銷活動標識碼 my-facebook-campaign

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

當她的 Facebook 和 Twitter 追隨者按兩下 URL 時,Microsoft追蹤每個點擊,並將其與對應的自定義行銷活動產生關聯。 後續符合資格的遊戲購買和任何附加元件購買都與自定義行銷活動相關聯,並回報為轉換。

探討收購如何被視為轉換

自訂行銷活動 轉換 是指客戶點擊透過自訂行銷活動推廣的 URL 後產生的收購。 根據營銷活動標識碼 下載數 報表中 圖表的轉換,以及 程序設計方式擷取營銷活動標識碼,將資格視為 轉換,有不同的案例。

獲取報告中的合格轉換

以下情境符合 應用程式頁面檢視與依行銷活動 ID總行銷活動轉換 圖表的轉換資格於 獲取報告中:

  • 具有或未辨識的Microsoft帳戶的客戶 點擊包含自訂活動 ID 的應用程式 URL後,會被重新導向至應用程式的市集商店清單。 然後,在第一次單擊帶有自定義行銷活動標識碼的 Microsoft 市集 URL 後的 24 小時內,相同的客戶取得了應用程式。

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

注意

對於計入自定義行銷活動轉換的應用程式下載量,該應用程式中的任何附加元件購買也會計入相同自定義行銷活動的轉換。

以程式化擷取活動 ID 時判定合格的轉換

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

  • 在執行 Windows 10 版本 1607 或更新版本的裝置上,:客戶(無論是否登入已辨識的 Microsoft 帳戶)單擊包含自定義行銷活動識別碼的 URL,並重新導向至應用程式的商店清單頁面。 客戶通過單擊 URL 來檢視市集清單,從而取得應用程式。

  • 在執行 Windows 10 版本 1511 或更早版本的裝置上,:客戶(必須使用已辨識的 Microsoft 帳戶登入)點擊包含自訂行銷活動識別碼的 URL,並被重新導向至應用程式的商店清單頁面。 使用者透過點擊 URL 來查看市集清單,進而取得應用程式。 在這些版本的 Windows 10 或 Windows 11 上,用戶必須使用已辨識的 Microsoft 帳戶登入,以便在透過程式自動取得行銷活動標識符時,使該取得符合轉換資格。

注意

如果客戶離開市集清單頁面, 但回到具有 24 小時的頁面(在相同裝置上,或使用相同的Microsoft帳戶登入時,或在不同的裝置上),並取得應用程式,此 符合活動標識符 的 轉換資格,並 下載報告 圖表中的 [總計] 活動轉換。 不過,如果您以程序設計方式擷取營銷活動標識碼,此 將不會 資格為轉換。

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

要為具有自訂活動識別碼的應用程式建立 Microsoft 商店頁面 URL:

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

注意

當其他開發人員檢視其應用程式的 併購報告 時,行銷活動標識符字串可能會被看到。 當客戶點擊您的自訂推廣活動 ID 進入商店,並在相同的會話內購買另一位開發人員的應用程式,從而將該轉換歸因於您的行銷活動 ID 時,就會發生這種情況。 該開發人員會在使用您的活動 ID 進行第一次點擊後,看到他們自己的應用程式有多少次轉換,包括活動 ID 的名稱。但是,他們不會獲得關於有多少使用者在點擊您的活動 ID 後購買您應用程式或任何其他開發人員的應用程式的任何數據。

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

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

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

  2. 將下列字串附加至應用程式的網址結尾:

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

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

以程式設計方式擷取應用程式的自定義行銷活動標識碼

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

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

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

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

  • Windows 10 版本 1511 或更早版本:在 Windows.ApplicationModel.Store 命名空間中使用 CurrentApp 類別。 在使用此 API 時,您只能擷取自訂的行銷活動 ID,針對 合格取得 的項目,其中使用者需以已辨識的 Microsoft 帳戶登入。

注意

雖然 Windows.ApplicationModel.Store 命名空間適用於所有版本的 Windows 10 或 Windows 11,但如果您的 app 以 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 帳戶的自定義行銷活動 ID。 若要這樣做,程式代碼會取得代表目前應用程式 SKU 的 StoreSku 對象,然後它會存取 CampaignId 屬性來擷取活動標識符,如果有的話。

  3. 然後,程式代碼會嘗試擷取在目前用戶沒有已識別的 Microsoft 帳戶時的活動 ID。 在此情況下,行銷活動標識符會內嵌在應用程式授權中。 程式碼會使用 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 作業,以在將應用程式提交至市集之前測試程序代碼。 這個類別會從 名為 Windows.StoreProxy.xml 檔案的本機檔案擷取數據。 上述程式代碼範例示範如何在專案的偵錯和非偵錯程序代碼中使用 CurrentAppCurrentAppSimulator。 若要在偵錯環境中測試此程式碼,請將 AppPurchaseCampaignId 元素新增至開發電腦上的 WindowsStoreProxy.xml 檔案,如下列範例所示。 當您執行應用程式時,GetAppPurchaseCampaignIdAsync 方法一律會傳回此值。

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

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

測試您的自定義營銷活動

在促銷自定義行銷活動 URL 之前,建議您執行下列動作來測試您的自定義行銷活動:

  1. 登入您用於測試之裝置上的Microsoft帳戶。

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

  3. 多次點擊 URL,在每次造訪應用程式頁面後關閉 UWP 應用程式或瀏覽器頁面。 在 瀏覽應用程式頁面期間,取得您的應用程式以產生轉換。 計算您按兩下 URL 的總次數。

  4. 確認預期的頁面檢視和轉換是否出現在 應用程式頁面檢視和按照行銷活動標識碼 的轉換,還有 總行銷活動轉換的 圖表中,以及 獲取報告中。並測試您的app程式碼,以確認是否能使用上述 API 成功擷取行銷活動標識碼。