In-app-aankopen zijn een uitstekende manier om de inkomsten voor uw Windows Phone-app te vergroten. In deze zelfstudie laat ik je zien hoe je in-app aankopen implementeert in een Windows Phone 8 Silverlight-applicatie.
Als u uw toepassing wilt testen, moet u een product maken om mee te testen. Dit betekent dat je een actief Windows Phone ontwikkelaarsaccount nodig hebt als je mee wilt doen.
Windows Phone 8 biedt een gemakkelijke aankoopervaring, betrouwbare uitbetalingen, geo-gedistribueerde services en hulpprogramma's voor productbeheer om zinvolle commercie in uw app te bereiken. U kunt kiezen tussen in-app-aankopen en andere betalingsopties (bijvoorbeeld PayPal), maar in-app-aankopen bieden u meer flexibiliteit als ze bieden:
Blader in het dashboard van de Windows Phone Developer Portal naar de Details van uw app en noteer het App-ID. Pak ook je GUID van uitgever van de ontwikkelaar portal. U zult deze details later nodig hebben om het manifest-bestand van de applicatie bij te werken.
Als u een nieuwe app aan het ontwikkelen bent, ga dan naar het dashboard en klik op Verstuur app om het inzendingsproces te starten en een naam voor uw app te reserveren. Sla deze gegevens op en u kunt het indienen van het XAP-bestand nu overslaan. Noteer de app-ID van de App-eigenschappen sectie.
Onder applicatiedetails is er een producten tabblad waar u in-app-producten voor uw app kunt toevoegen en beheren. Voor het doel van deze demonstratie hebben we een product met de naam Premium-app.
In de ontwikkelaarportal van Windows Phone moet u de eigenschappen en beschrijving van uw in-app-product toevoegen. U kunt optioneel aangepaste prijzen instellen op verschillende markten voor uw product.
U moet de eigenschappen van uw in-app-product invullen, zoals weergegeven in de volgende schermafbeelding. Herinner de Productidentificatie omdat je het nodig hebt voor het vermelden van in-app-producten in je app.
Hier zijn enkele dingen die u moet onthouden tijdens het toevoegen van een in-app-product:
In de beschrijvingssectie moet u een producttitel, beschrijving en afbeelding toevoegen voor het in-app-product, zoals weergegeven in de onderstaande schermafbeelding.
Houd er rekening mee dat het een of twee uur kan duren om uw inzending te verwerken voordat het product wordt gepubliceerd.
Het is tijd om het toepassingsmanifest bij te werken door het toe te voegen App-ID en GUID van uitgever, die je hebt gekopieerd van de Windows Phone-ontwikkelaarportal. De ... gebruiken Solution Explorer van uw project, blader naar eigenschappen en zoek WMAppManifest.xml.
Visual Studio wijst een willekeurig Product-ID en Publisher-ID toe wanneer u een nieuw project maakt. U moet dit wijzigen door naar het Packaging tab. Als u alleen Windows Phone 8.1 target, moet u bijwerken Package.appmanifest in aanvulling op WMAppManifest.xml.
De app gebruikt de API voor in-app-aankopen die beschikbaar is in de Windows Phone SDK om producten op te halen en weer te geven. De gebruiker heeft nu een optie om deze producten te kopen in de app. Afhankelijk van de toepassing die u aan het bouwen bent, wilt u misschien specifieke producten op verschillende plaatsen vermelden, maar laten we voor het doel van de demonstratie alle producten weergeven die bij de app horen en de aankoopstroom afhandelen..
We hebben een ItemsControl
om de producten te houden. Het volgende codefragment laat zien hoe u de datasjabloon van uw kunt definiëren ItemsControl
en bind de producten eraan. Merk op dat de koopknop is alleen zichtbaar als de gebruiker het product niet heeft gekocht. Voel je vrij om met de datasjabloon te spelen om het aantrekkelijker te maken.
De openbare klasse ProductItem
bewaart alle informatie met betrekking tot een bepaald product. Er is een ObservableCollection
van type ProductItem
genaamd picItems
, die alle producten opslaat.
public class ProductItem public string imgLink get; vast te stellen; public string Status get; vast te stellen; public string Name get; vast te stellen; openbare string sleutel get; vast te stellen; public System.Windows.Visibility BuyNowButtonVisible get; vast te stellen;
De volgende stap is om een functie toe te voegen RenderStoreItems
in de code erachter om alle producten voor de toepassing op te sommen. Met deze functie wordt een asynchrone aanroep gedaan LoadListingInformationAsync
om de producten voor de huidige toepassing weer te geven. De functie herhaalt vervolgens elk product, controleert de licentie-informatie en voegt deze toe aan de lijst. We binden de naam, de aankoopstatus en de prijs aan de keuzelijst en geven deze weer aan de gebruiker.
ListingInformation li = wachten op Windows.ApplicationModel.Store.CurrentApp.LoadListingInformationAsync (); foreach (string key in li.ProductListings.Keys) ProductListing pListing = li.ProductListings [key]; System.Diagnostics.Debug.WriteLine (key); string status = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [key] .IsActive? "Gekocht": pListing.FormattedPrice; string imageLink = string.Empty; // picItems is een waarneembare verzameling met globale reikwijdte voor MainPage.xaml picItems.Add (nieuw ProductItem imgLink = key.Equals ("PremiumVersion")? "Images / block-ads.png": "Images / block-ads.png ", Name = pListing.Name, Status = status, key = key, BuyNowButtonVisible = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [key] .IsActive? System.Windows.Visibility.Collapsed: System.Windows.Visibility.Visible ); pics.ItemsSource = picItems;
Merk op dat je een correct moet invoeren App-ID, Uitgevers-ID, en Product-ID voordat u het voorbeeldproject kunt implementeren met deze zelfstudie.
Vervolgens moet u de klikgebeurtenishandler toevoegen voor de koopknop. De functie ButtonBuyNow_Clicked
initieert de aankoop. De gebruiker krijgt een aankoopervaring te zien die deel uitmaakt van het Windows Phone 8-platform. Wanneer de aankoop is voltooid, kunt u een vergrendelde functie inschakelen of de gebruiker extra inhoud laten downloaden. Dit is geheel aan jou.
Knop btn = afzender als knop; string key = btn.Tag.ToString (); if (! Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [key] .IsActive) ListingInformation li = await Windows.ApplicationModel.Store.CurrentApp.LoadListingInformationAsync (); string pID = li.ProductListings [key] .ProductId; string receipt = await Windows.ApplicationModel.Store.CurrentApp.RequestProductPurchaseAsync (pID, false);
U kunt de API voor in-app-aankopen gebruiken om de licenties op te sommen die de gebruiker heeft voor de producten in uw app wanneer de app wordt gestart of hervat, of na een aankoop. Hiermee kunt u bepalen of de gebruiker al eigenaar is van het product waarvoor hij of zij een licentie heeft verleend, of dat de uitvoering ervan nog in behandeling is. U kunt ook bonnen voor de door de gebruiker gekochte producten ophalen om te controleren of de transactie plaatsvond met behulp van de GetProductReceiptAsync
functie.
string receiptXml = wacht CurrentApp.GetProductReceiptAsync ("PremiumVersion");
Controleren of LicenseInformation.IsActive
komt terug waar
voor een product voor het uitvoeren van een aankoop. De oproep naar deze functie is echter intensief, dus het is raadzaam om deze niet te bellen bij het starten of hervatten van de app.
Als u denkt dat een productaankoop is voltooid, controleert u eerst of er een licentie bestaat voor dat product-ID en controleert u vervolgens of Is actief
is waar
op die licentie. Als de licentie actief is, moet onmiddellijk aan de aankoop worden voldaan.
bool productStatus = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses ["AdBlocker"]. IsActive;
Een mogelijk scenario waarin in-app-aankopen nuttig kunnen zijn, is wanneer u uw app gratis met advertenties wilt verspreiden en de gebruiker in staat wilt stellen om ze te verwijderen via een in-app-aankoop. Hier volgt een artikel over het implementeren van een functie voor het blokkeren van advertenties met behulp van de API voor in-app-aankopen. Dezelfde techniek kan worden gebruikt om een proef te implementeren. Het voordeel is dat uw app gratis wordt vermeldcategorie in de winkel en zal als resultaat je meer downloads opleveren.
In het geval van verbruiksgoederen is het de verantwoordelijkheid van de app om het verbruik bij te houden. De CurrentApp.LicenseInformation
geeft alleen informatie over de licentie, niet de staat.
Als u uw app in de emulator test, zijn in-app-aankopen gratis en vindt er geen financiële transactie plaats. Telkens wanneer u de app opnieuw in de emulator installeert, wordt eerder opgeslagen licentie-informatie gewist.
Er zijn drie hoofdtechnieken voor het testen van in-app-aankopen:
In deze zelfstudie leert u hoe u in-app-producten kunt weergeven en een app-functie kunt inschakelen wanneer de gebruiker een product koopt. Er zijn veel aanpassingen mogelijk met in-app aankopen en ze kunnen in verschillende scenario's worden gebruikt.
Ik raad u aan om het In-AppPurchase API-overzicht op MSDN door te nemen. Het is ook de moeite waard om een kijkje te nemen naar opties om in-app-aankoopmogelijkheden in uw app te testen voordat u deze publiceert op de marktplaats. Download de bronbestanden van de zelfstudie om te gebruiken als referentie.