Jak na Microsoft Advertising a InApp Purchases ve Windows Store aplikacích

Windows Store aplikace podporují několik možností výdělků. Základním modelem je poskytovat aplikace zcela zdarma, nebo jako placené s možností trial verze.

Délku platnosti Trial verze si může zajistit buď vývojář sám, nebo může využít funkce Windows Store, která umožňuje aplikaci používat po předem zvolenou dobu, po které již aplikace nepůjde spustit.

Další možností, jak zpeněžit Windows Store aplikace, jsou i tzv. InApp Purchases, neboli „nákupy uvnitř aplikace“. Nejjednodušeji si lze tuto funkci představit třeba u her, kde se často používá k dokupování herních úrovní, zbraní, vylepšení či různé virtuální měny. Nákupy uvnitř aplikace se také používají třeba pro nákupy předplatného novin či časopisů.

U Windows Store aplikací lze použít jak Windows Store API pro InApp purchases, nebo po dodržení určitých podmínek i jakékoliv jiné API, zde již je potom čistě na daném vývojáři, jak si nákupy i svého API bude řešit a kontrolovat.

Třetí možností výdělku u Windows Store aplikací je reklama v aplikaci. Nejjednodušší možností jak umístit reklamu do aplikace je použití Microsoft Advertising SDK, I zde je ale možné použít jakýkoliv jiný reklamní systém po dodržení podmínek pro typ a umístění reklamy.

Jak použít InApp Purchases v aplikaci

Jednotlivé nákupy uvnitř Windows Store aplikace se označují jako „produkty“. Produktem může být cokoliv, od nových úrovní ve hře po předplatné časopisu.

Všechny produkty dostupné v aplikaci musí mít pevně zadaný identifikátor, dobu platnosti a cenu při odesílání aplikace do Windows Store. Podle tohoto identifikátoru se potom v aplikaci ověřuje, zda si uživatel již daný produkt zakoupil či zda je ještě platný.

Pro ověřování či zakoupení produktů a pro kontrolu trial/plné verze aplikace se ve Windows Store aplikaci používá třída:

Windows.ApplicationModel.Store.CurrentApp

a pro testování funkce nákupů a trial verze potom třída:

Windows.ApplicationModel.Store.CurrentAppSimulator

Bohužel tyto třídy nemají žádný společný interface, vyplatí se tedy vytvořit si jednoduchou Proxy třídu, která vrací v Debug módu CurrentAppSimulator a při Release potom CurrentApp.

 public static class CurrentAppProxy
{
    #if DEBUG
    public static IAsyncOperation<string> RequestAppPurchaseAsync(bool includeReceipt)
    {
        return CurrentAppSimulator.RequestAppPurchaseAsync(includeReceipt);
    }
    ...

    #else
    
    public static IAsyncOperation<string> RequestAppPurchaseAsync(bool includeReceipt)
    {
        return CurrentApp.RequestAppPurchaseAsync(includeReceipt);
    }
    ...
    #endif
}

Pro testování nákupů uvnitř aplikace se používá xml soubor s popisem aplikace, zda je trial nebo ne, jaké produkty má dostupné a které již zakoupené. Tímto souborem se potom inicializuje CurrentAppSimulator a ten se potom chová jako skutečná aplikace.

Ukázka jak funguje trial mód, nákupy uvnitř aplikace a používání CurrentAppSimulatoru:

https://code.msdn.microsoft.com/windowsapps/Licensing-API-Sample-19712f1a

Dokumentace k InApp purchases:

https://msdn.microsoft.com/en-us/library/windows/apps/hh694067.aspx

Článek o možnosti výdelku na Windows Store:

https://blogs.msdn.com/b/windowsstore/archive/2012/07/20/making-money-with-your-apps-through-the-windows-store.aspx

Je dobré vědět, že před odesláním placené aplikace, nebo aplikace s nákupy uvnitř je nutné mít ve Windows Store vyplněný účet pro výplatu peněz a vyplněný daňový profil pomocí formuláře W-8BEN. Pro oboje je na Windows Store dostupný jednoduchý návod a schválení netrvá obvykle déle než den.

Jak použít Microsoft Advertising

Microsoft Advertising API umožňuje zobrazit ve Windows Store aplikaci banner v předem zvolené velikosti s reklamou cílenou pro uživatele dané aplikace.

Pro použití Microsoft Advertising je třeba zaregistrovat se pomocí Microsoft Account, na webu:

https://pubcenter.microsoft.com

A stáhnout si dokumentaci a Microsoft Advertising SDK na webu:

https://advertising.microsoft.com/ads-in-apps

Po instalaci SDK je třeba na webu PubCenter zaregistrovat aplikaci, kde se bude reklama zobrazovat, čímž se získá ApplicationId, a zaregistrovat také formát reklamy, který se v aplikaci bude používat, čímž se získá AdUnitId. Při registraci typu reklamy se definuje rozměr banneru a typ reklamy, např. hry, knihy, zprávy, zábava, atd.

Dále je třeba přidat do Windows Store aplikace odkaz na „Microsoft Advertising SDK for Windows 8“ a přidat na vybrané místo v aplikaci banner, typicky takto:

xmlns:ad="using:Microsoft.Advertising.WinRT.UI"

 <Border x:Name="AdPanel" VerticalAlignment="Top" HorizontalAlignment="Right">
    <ad:AdControl x:Name="Ad" Height="90" Width="728" IsAutoRefreshEnabled="/>
</Border>

Na co je dobré myslet při umísťování banneru: reklama nesmí být zobrazována na LiveTiles, v AppBaru, Settings a dalších místech, které jsou popsány v podmínkách certifikace zde, bod 5:

https://msdn.microsoft.com/en-us/library/windows/apps/hh694083.aspx

Snadno tak nemusí projít certifikací aplikace, pokud třeba do About boxu v Settings umístíte odkaz na tu samou aplikaci pro Windows Phone. U aplikací zobrazujících reklamy je také třeba nastavit minimální věk 12+, lépe však 16+ a přidat odkaz na odpovídající soubor Privacy Policy.

Dále je dobré dát pozor na to, aby banner nezakrýval žádnou část obsahu, pokud má obrazovka velmi malé rozlišení, nebo je třeba ve Snapped módu. Toto je možné vyřešit třeba přidáním event handleru SizeChanged na stránku a při každé změně velikosti okna aplikace buď skrýt nebo zobrazit banner.

Důležité, u každého banneru je třeba zadat získané ApplicationId a AdUnitId. Navíc je třeba pro potřeby testování používat testovací ApplicationId a AdUnitId namísto skutečných. Bohužel tyto hodnoty nelze nastavit pomocí DataBindingu, ale jen přímo. Je doporučené to provádět v konstruktoru stránky nebo prvku, který obsahuje tento banner a nastavované hodnoty mít různé pro Debug a Release mód, např. takto:

 private const string TestApplicationId = "d25517cb-12d4-4699-8bdc-52040c712cab";
private const string TestAdUnitId728x90 = "10042998";
private const string RealApplicationId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
private const string RealAdUnitId728x90 = "xxxxxx";


public string ApplicationId
{
    get
    {
        #if DEBUG
        return TestApplicationId;
        #else
        return RealApplicationId;
        #endif
    }

}


public string AdUnitId
{
    get
    {
        #if DEBUG
        return TestAdUnitId728x90;
        #else
        return RealAdUnitId728x90;
        #endif
    }

}

Seznam hodnot ApplicationId a AdUnitId pro testování je dostupný zde:

https://msdn.microsoft.com/en-us/library/hh506361(v=msads.10).aspx

Podrobný návod pro Microsoft Advertising SDK:

https://msdn.microsoft.com/en-us/library/hh506371(v=msads.10).aspx

Autor: Martin Suchan