Gli acquisti in-app sono un modo eccellente per aumentare le entrate della tua app per Windows Phone. In questo tutorial, ti mostrerò come implementare gli acquisti in-app in un'applicazione Silverlight di Windows Phone 8.
Per testare la tua applicazione, dovrai creare un prodotto per testare con. Ciò significa che avrai bisogno di un account sviluppatore di Windows Phone attivo se vuoi seguirlo.
Windows Phone 8 offre un'esperienza di acquisto conveniente, pagamenti affidabili, servizi geo-distribuiti e strumenti di gestione del prodotto per ottenere un commercio significativo nella tua app. Puoi scegliere tra acquisti in-app e altre opzioni di pagamento (ad esempio PayPal), ma gli acquisti in-app ti offrono maggiore flessibilità in quanto forniscono:
Nel dashboard del portale per sviluppatori di Windows Phone, accedere a Dettagli scheda della tua app e prendere nota del ID app. Prendi anche il tuo GUID del publisher dal portale degli sviluppatori. Avrai bisogno di questi dettagli in seguito per aggiornare il file manifest dell'applicazione.
Se stai sviluppando una nuova app, vai al dashboard e clicca su Invia l'app per avviare la procedura di invio e prenotare un nome per la tua app. Salva questi dettagli e per ora puoi saltare l'invio del file XAP. Prendi nota dell'app ID dal Proprietà dell'app sezione.
Sotto i dettagli dell'applicazione, c'è un Prodotti scheda in cui è possibile aggiungere e gestire prodotti in-app per la tua app. Ai fini di questa dimostrazione, abbiamo creato un prodotto chiamato App Premium.
Nel portale per sviluppatori di Windows Phone, è necessario aggiungere le proprietà e la descrizione del prodotto in-app. Puoi facoltativamente impostare prezzi personalizzati in mercati diversi per il tuo prodotto.
Devi compilare le proprietà del tuo prodotto in-app come mostrato nello screenshot seguente. Ricorda il Identificatore del prodotto poiché ne avrai bisogno per elencare i prodotti in-app nella tua app.
Ecco alcune cose che vale la pena ricordare mentre aggiungi un prodotto in-app:
La sezione descrizione richiede l'aggiunta di un titolo prodotto, descrizione e immagine per il prodotto in-app, come mostrato nello screenshot qui sotto.
Tieni presente che potrebbero essere necessarie una o due ore per elaborare l'invio prima che il prodotto sia pubblicato.
È ora di aggiornare il manifest dell'applicazione aggiungendo il ID app e GUID del publisher, che hai copiato dal portale per sviluppatori di Windows Phone. Usando il Esploratore di soluzioni del tuo progetto, vai a Proprietà e individuare WMAppManifest.xml.
Visual Studio assegna un ID prodotto e un ID publisher casuali quando si crea un nuovo progetto, che è necessario modificare andando al Confezione scheda. Se hai scelto come target solo Windows Phone 8.1, devi eseguire l'aggiornamento Package.appmanifest inoltre WMAppManifest.xml.
L'app utilizza l'API di acquisto in-app disponibile nell'SDK di Windows Phone per recuperare i prodotti ed elencarli. L'utente ha ora un'opzione per acquistare questi prodotti dall'interno dell'app. A seconda dell'applicazione che stai creando, potresti voler elencare prodotti specifici in luoghi diversi, ma allo scopo della dimostrazione mostriamo tutti i prodotti associati all'app e gestiamo il flusso di acquisto.
Abbiamo bisogno di un ItemsControl
tenere i prodotti. Il seguente frammento di codice mostra come è possibile definire il modello di dati del tuo ItemsControl
e associare i prodotti ad esso. Si noti che l'acquistoil pulsante è visibile solo se l'utente non ha acquistato il prodotto. Sentiti libero di giocare con il modello di dati per renderlo più attraente.
La classe pubblica ProductItem
memorizza tutte le informazioni relative ad un particolare prodotto. C'è un ObservableCollection
di tipo ProductItem
di nome picItems
, che memorizza tutti i prodotti.
public class ProductItem public string imgLink get; impostato; public string Status get; impostato; public string Name get; impostato; public string key get; impostato; public System.Windows.Visibility BuyNowButtonVisible get; impostato;
Il prossimo passo è aggiungere una funzione RenderStoreItems
nel codice sottostante per elencare tutti i prodotti per l'applicazione. Questa funzione effettua una chiamata asincrona a LoadListingInformationAsync
per rendere i prodotti per l'applicazione corrente. La funzione quindi esegue iterazioni su ogni prodotto, controllandone le informazioni sulla licenza e aggiungendole all'elenco. Leghiamo il nome, lo stato di acquisto e il prezzo alla casella di riepilogo e lo mostriamo all'utente.
ListingInformation li = attendi Windows.ApplicationModel.Store.CurrentApp.LoadListingInformationAsync (); foreach (stringa chiave in li.ProductListings.Keys) ProductListing pListing = li.ProductListings [chiave]; System.Diagnostics.Debug.WriteLine (chiave); string status = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [chiave] .IsActive? "Acquistato": pListing.FormattedPrice; string imageLink = string.Empty; // picItems è una collezione osservabile con portata globale a MainPage.xaml picItems.Add (new ProductItem imgLink = key.Equals ("PremiumVersion")? "Images / block-ads.png": "Immagini / block-ads.png ", Nome = pListing.Name, Stato = stato, chiave = chiave, BuyNowButtonVisible = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [chiave] .IsActive? System.Windows.Visibility.Collapsed: System.Windows.Visibility.Visible ); pics.ItemsSource = picItems;
Si noti che è necessario inserire un corretto ID app, ID editore, e Codice prodotto prima di poter distribuire il progetto di esempio con questo tutorial.
Successivamente, è necessario aggiungere il gestore eventi click per il pulsante di acquisto. La funzione ButtonBuyNow_Clicked
avvia l'acquisto. All'utente viene presentata un'esperienza di acquisto che fa parte della piattaforma Windows Phone 8. Una volta completato l'acquisto, è possibile abilitare una funzionalità bloccata o consentire all'utente di scaricare contenuti aggiuntivi. Questo dipende interamente da te.
Button btn = mittente come Button; string key = btn.Tag.ToString (); if (! Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses [key] .IsActive) ListingInformation li = attendi Windows.ApplicationModel.Store.CurrentApp.LoadListingInformationAsync (); string pID = li.ProductListings [chiave] .ProductId; string receipt = Attendi Windows.ApplicationModel.Store.CurrentApp.RequestProductPurchaseAsync (pID, false);
Puoi utilizzare l'API di acquisto in-app per enumerare le licenze che l'utente ha per i prodotti nella tua app quando l'app viene avviata o ripresa, o dopo un acquisto. Ciò consente di determinare se l'utente è già proprietario del prodotto che ha ottenuto in licenza o se il suo adempimento è ancora in sospeso. È anche possibile recuperare le ricevute per i prodotti acquistati dall'utente per verificare se la transazione ha avuto luogo utilizzando il GetProductReceiptAsync
funzione.
string receiptXml = attendi CurrentApp.GetProductReceiptAsync ("PremiumVersion");
Controlla se LicenseInformation.IsActive
ritorna vero
per un prodotto prima di realizzare un acquisto. Tuttavia, la chiamata a questa funzione richiede molte risorse, quindi è consigliabile non chiamarla all'avvio o riprendere l'app.
Quando ritieni che l'acquisto di un prodotto sia completato, verifica innanzitutto che esista una licenza per quell'ID prodotto e quindi controlla se è possibile È attivo
è vero
su quella licenza. Se la licenza è attiva, l'acquisto deve essere eseguito immediatamente.
bool productStatus = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses ["AdBlocker"]. IsActive;
Un possibile scenario in cui gli acquisti in-app possono essere utili è quando si desidera distribuire l'app gratuitamente con gli annunci e consentire all'utente di rimuoverli tramite un acquisto in-app. Ecco un articolo sull'implementazione di una funzione "block ads" utilizzando l'API di acquisto in-app. La stessa tecnica può essere utilizzata per implementare una prova. Il vantaggio è che la tua app è elencata gratuitamentecategoria nel negozio e di conseguenza otterrà più download.
Nel caso di prodotti di consumo, è responsabilità dell'applicazione monitorare i consumi. Il CurrentApp.LicenseInformation
fornisce solo informazioni sulla licenza, non sullo stato.
Se esegui il test della tua app nell'emulatore, gli acquisti in-app sono gratuiti e non vengono effettuate transazioni finanziarie. Ogni volta che si reinstalla l'applicazione nell'emulatore, le informazioni sulla licenza memorizzate in precedenza vengono cancellate.
Esistono tre principali tecniche per testare gli acquisti in-app:
In questo tutorial, hai imparato come elencare prodotti in-app e abilitare la funzione di app quando l'utente acquista un prodotto. Ci sono molte personalizzazioni possibili con gli acquisti in-app e possono essere utilizzati in una varietà di scenari.
Ti invito a consultare la panoramica dell'API In-AppPurchase su MSDN. Vale anche la pena dare un'occhiata alle opzioni per testare le funzionalità di acquisto in-app nella tua app prima di pubblicarla sul mercato. Sentiti libero di scaricare i file sorgente del tutorial da usare come riferimento.