Implementera köp i app på Windows Phone 8

Köp i app är ett utmärkt sätt att öka intäkterna för din Windows Phone-app. I den här handledningen visar jag dig hur man implementerar inköp i app i ett Windows Phone 8 Silverlight-program.

För att testa din ansökan måste du skapa en produkt som ska testas med. Det innebär att du behöver ett aktivt Windows Phone Developer-konto om du vill följa med.

Introduktion

Windows Phone 8 ger en bekväm uppköpserfarenhet, pålitliga utbetalningar, geodistribuerade tjänster och verktyg för produkthantering för att uppnå meningsfull handel i din app. Du kan välja mellan inköp i app och andra betalningsalternativ (till exempel PayPal), men köp i app ger dig större flexibilitet som de ger:

  • hantering av produkter som använder utvecklarportalen för Windows Phone
  • geo-distribuerade tjänster och utbetalningar i mer än 190 länder
  • konsekvent köpupplevelse för användare över alla appar på telefonen och bevis på äkthet genom säkra kvitton

1. Hämta ett app-ID

I utvecklingsportalens Windows Dashboard, bläddra till detaljer fliken i din app och notera App ID. Ta också med dig Utgivare GUID från utvecklarportalen. Du kommer att behöva dessa detaljer senare för att uppdatera applikations manifestfilen.

Om du utvecklar en ny app går du till instrumentpanelen och klickar på Skicka app för att starta inlämningsprocessen och reservera ett namn på din app. Spara dessa detaljer och du kan hoppa över att skicka in XAP-filen för nu. Notera bara App-ID från Appegenskaper sektion.

2. Lägg till en produkt i din app

Under ansökningsuppgifter finns det a Produkter flik där du kan lägga till och hantera produkter i appen för din app. För denna demonstration har vi skapat en produkt som heter Premium App

I utvecklarportalen för Windows Phone måste du lägga till din produktinformation och beskrivning i app-appen. Du kan valfritt ställa in anpassad prissättning på olika marknader för din produkt.  

Du måste fylla i egenskaperna hos din in-app-produkt som visas i följande skärmdump. Kom ihåg det Produktidentifierare som du behöver för att kunna lista produkter i appen i din app.

Här är några saker som är värda att komma ihåg när du lägger till en in-app-produkt:

  • Du kan ha flera produkter för en app. Varje produkt kan vara förbrukningsbar eller hållbar. Varaktiga produkter kan endast köpas en gång.
  • Universella appar kan dela in app-produkter, låta användare köpa en gång och använda var som helst. Din produktkategori i produkt kan skilja sig, men produktnamnet och identiteten ska matcha för att detta ska fungera.
  • Du kan definiera anpassad prissättning för dina produkter i olika länder.

Beskrivningsdelen kräver att du lägger till en produkttitel, beskrivning och bild för produkten i appen som visas på skärmbilden nedan.

Observera att det kan ta en eller två timmar att behandla din inlämning innan produkten publiceras.

3. Uppdatera applikationsmanifest

Det är dags att uppdatera ansöknings manifestet genom att lägga till App ID och Utgivare GUID, som du kopierade från utvecklarportalen för Windows Phone. Använda Lösningsutforskare av ditt projekt, bläddra till Egenskaper och lokalisera WMAppManifest.xml.

Visual Studio tilldelar ett slumpmässigt produkt-ID och utgivar-ID när du skapar ett nytt projekt, vilket du måste ändra genom att gå till Förpackning flik. Om du bara riktar in Windows Phone 8.1 måste du uppdatera Package.appmanifest Dessutom WMAppManifest.xml.

4. Lista produkter i appen i din app

Appen använder apphanterings API-programmet tillgängligt i Windows Phone SDK för att hämta produkter och lista dem. Användaren har nu möjlighet att köpa dessa produkter från appen. Beroende på vilken applikation du bygger, kanske du vill lista specifika produkter på olika ställen, men för demonstrationens syfte, låt oss visa alla produkter som är associerade med appen och hantera inköpsflödet.

Vi behöver en ItemsControl att hålla produkterna. Följande kodsekvens visar hur du kan definiera datamallen för din ItemsControl och binda produkterna till den. Observera att köpetknappen är endast synlig om användaren inte har köpt produkten. Känn dig fri att spela med datamallen för att göra det mer attraktivt.

             

Den offentliga klassen ProductItemlagrar all information som är relaterad till en viss produkt. Där är en ObservableCollection av typ ProductItem som heter picItems, som lagrar alla produkter.

offentlig klass ProductItem public string imgLink get; uppsättning;  allmän sträng Status get; uppsättning;  allmän sträng Namn get; uppsättning;  allmän strängnyckel get; uppsättning;  offentligt system.Windows.Visibility BuyNowButtonVisible get; uppsättning; 

Nästa steg är att lägga till en funktion RenderStoreItemsi koden bakom för att lista alla produkter för ansökan. Denna funktion gör ett asynkront samtal till LoadListingInformationAsyncatt göra produkterna för den aktuella applikationen. Funktionen repeterar sedan genom varje produkt, kontrollerar dess licensinformation och lägger till den i listan. Vi binder namn, köpstatus och pris till listrutan och visar det till användaren.

ListingInformation li = väntar Windows.ApplicationModel.Store.CurrentApp.LoadListingInformationAsync (); foreach (strängnyckel i li.ProductListings.Keys) ProductListing pListing = li.ProductListings [key]; System.Diagnostics.Debug.WriteLine (nyckel); strängstatus = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [key] .IsActive? "Köpt": pListing.FormattedPrice; sträng imageLink = string.Empty; // picItems är en observerbar samling med globala räckvidd till MainPage.xaml picItems.Add (ny ProductItem imgLink = key.Equals ("PremiumVersion")? "Images / block-ads.png": "Bilder / block-ads.png" ", Namn = pListing.Name, Status = Status, nyckel = nyckel, BuyNowButtonVisible = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [key] .IsActive? System.Windows.Visibility.Collapsed: System.Windows.Visibility.Visible );  pics.ItemsSource = picItems;

Observera att du måste ange rätt App ID, Utgivare-ID, och Serienummer innan du kan distribuera provprojektet med denna handledning.

Därefter måste du lägga till händelsehanteraren för att klicka på knappen Köp. Funktionen ButtonBuyNow_Clickedinitierar köpet. Användaren presenteras med en köpupplevelse som ingår i Windows Phone 8-plattformen. När inköpet är klart kan du aktivera en låst funktion eller låta användaren hämta ytterligare innehåll. Det här är helt upp till dig.

Knapp btn = avsändare som knapp; strängnyckel = btn.Tag.ToString (); om (! Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [key] .IsActive) ListingInformation li = väntar Windows.ApplicationModel.Store.CurrentApp.LoadListingInformationAsync (); sträng pID = li.ProductListings [key] .ProductId; strängkvittot = väntar Windows.ApplicationModel.Store.CurrentApp.RequestProductPurchaseAsync (pID, false); 

5. Efter inköp

Du kan använda inköp API för appen för att räkna upp de licenser som användaren har för produkterna i din app när appen startas eller återupptas, eller efter ett köp. Detta låter dig avgöra om användaren redan äger den produkt som han eller hon har licensierat, eller om dess uppfyllelse fortfarande är pågående. Du kan också hämta kvitton för de produkter som köps av användaren för att verifiera om transaktionen skedde med hjälp av GetProductReceiptAsync fungera.

sträng receiptXml = väntar CurrentApp.GetProductReceiptAsync ("PremiumVersion");

Kolla vädret LicenseInformation.IsActiveavkastning Sann för en produkt innan ett köp uppnås. Anropet till denna funktion är dock resursintensiv så det är lämpligt att inte ringa det vid applansering eller återuppta.

När du tror att ett produktköp har slutförts, först verifiera att det finns en licens för det produktidentifikationen och kontrollera sedan om Är aktiv är Sann på den licensen. Om licensen är aktiv ska köpet vara uppfyllt omedelbart.

bool productStatus = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses ["AdBlocker"]. IsActive;

Ett möjligt scenario där inköp i app kan vara användbar är när du vill distribuera din app gratis med annonser och låta användaren ta bort dem via ett köp i app. Här är en artikel om att implementera en "block ads" -funktion med hjälp av köpprogrammet för app-app. Samma teknik kan användas för att genomföra en försök. Fördelen är att din app är listad i gratiskategori i butiken och kommer som ett resultat att få dig fler nedladdningar.

När det gäller konsumtionsprodukter är det appens ansvar att spåra konsumtionen. De CurrentApp.LicenseInformationger endast information om licensen, inte staten.

6. Testing av köp i appar

Om du testar din app i emulatorn är inköpsköp gratis och inga finansiella transaktioner äger rum. Varje gång du installerar om appen i emulatorn, raderas tidigare lagrad licensinformation.

Det finns tre huvudsakliga tekniker för att testa inköp i app:

  • skapa en Dev Center beta-app och lägg till beta i app-produkter
  • lägg till mock in-app köp mock bibliotek till din lösning
  • inrätta en inköpsservice för appen med hjälp av Microsoft Internet Information Services (IIS)

Slutsats

I den här handledningen har du lärt dig hur du listar produkter i appen och aktiverar en appfunktion när användaren köper en produkt. Det finns många anpassningar möjliga med inköp i app och de kan användas i olika scenarier.

Jag uppmanar dig att gå igenom översiktsgränssnittet i AppPurchase på MSDN. Det är också värt att titta på alternativ för att testa inköpskapacitet i appen i din app innan du publicerar den på marknaden. Ta gärna hämta källkursfilerna för handledningen för att använda som referens.