Il plug-in Google Play Billing estende i servizi e gli asset integrati di Unity per gli acquisti in-app, chiamati Unity IAP, per fornire al tuo gioco tutte le funzionalità più recenti della Libreria Fatturazione Google Play. Questa guida spiega come configurare il progetto per utilizzare il plug-in. Questa guida descrive anche come implementare le funzionalità della Libreria Fatturazione Google Play nel tuo gioco in Unity.
Configurare il plug-in Google Play Billing
Per configurare il plug-in, completa i passaggi in ciascuna di queste sezioni collegate:
- Attiva il livello di astrazione Unity IAP.
- Scarica e importa il plug-in.
- Configura le impostazioni di build del plug-in.
- Attiva il plug-in.
Abilitare il livello di astrazione Unity IAP
Il plug-in Google Play Billing è basato su un livello di astrazione incluso in Unity IAP, quindi devi abilitare questo livello di astrazione prima di scaricare e importare il plug-in. Per attivare il livello di astrazione Unity IAP:
- Completa tutti i passaggi del seguente tutorial di Unity: Configurare il progetto per i servizi Unity.
- Completa tutti i passaggi del seguente tutorial di Unity: Attiva il servizio Unity IAP.
Scaricare e importare il plug-in
Il plug-in viene fornito come pacchetto Unity nel formato
.unitypackage. Per scaricare e importare il plug-in:
- Scarica l'ultima versione dei plug-in di Google Play per Unity dalla pagina delle release su GitHub del repository.
Nella barra dei menu di Unity, fai clic su Assets > Import Package > Custom Package (Asset > Importa pacchetto > Pacchetto personalizzato).
Individua la posizione in cui hai scaricato il file
.unitypackagee selezionalo.Nella finestra di dialogo Import Unity Package (Importa il pacchetto Unity), lascia selezionati tutti gli asset e fai clic su Import (Importa).
Dopo l'importazione del pacchetto, viene aggiunta agli asset del progetto una nuova cartella chiamata GooglePlayPlugins (nella radice della cartella Assets). Questa cartella contiene tutti gli asset della libreria Google Play Billing per il plug-in.
Configurare le impostazioni di build
Poiché il plug-in estende Unity IAP, Unity riscontrerà conflitti e non riuscirà a creare un APK Android a meno che alcune dipendenze precedenti e sovrapposte in Unity IAP non vengano rimosse dalla build. Il plug-in fornisce un modo automatico per rimuovere le librerie in conflitto dal progetto. Per risolvere questi conflitti, segui questi passaggi:
Nella barra del menu di Unity, seleziona Google > Play Billing > Build Settings (Google > Fatturazione Play > Impostazioni di build).
Nella finestra Impostazioni di fatturazione Play Build, fai clic su Correggi. In questo modo il conflitto viene risolto e i file Unity IAP in conflitto vengono spostati in una directory di backup. Dopo aver fatto clic su Correggi, il pulsante cambia in Ripristina, su cui puoi fare clic per ripristinare i file originali in conflitto.
Attiva il plug-in
Per attivare il plug-in, sostituisci l'implementazione di Google Play di Unity IAP con il
plug-in Google Play Billing. Ad esempio, quando utilizzi lo script
Unity IAP Purchaser,
devi modificare StandardPurchaseModule passato al generatore IAP
per utilizzare Google.Play.Billing.GooglePlayStoreModule:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
Se il tuo gioco utilizza lo stesso script di acquisto per più piattaforme, devi aggiungere un controllo della piattaforma per assicurarti che Unity continui a utilizzare la propria soluzione IAP per le altre piattaforme:
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
Se pubblichi il tuo gioco su altri store Android oltre a Google Play Store, devi sostituire l'implementazione predefinita di Unity IAP solo quando selezioni Google Play Store:
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
&& SelectedAndoidAppStore == AppStore.GooglePlay)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
Implementa le funzionalità della Libreria Fatturazione Google Play nel tuo gioco
Il plug-in Google Play Billing estende i servizi Unity IAP, in modo da poter utilizzare le stesse API Unity per gestire i flussi di lavoro di acquisto comuni. Tieni presente che sono state apportate alcune modifiche minori al comportamento dell'API a causa delle differenze tra la libreria Fatturazione Google Play e l'implementazione standard degli acquisti in-app di Unity per altri app store. Se non hai mai utilizzato le API Unity IAP, consulta la sezione "Making a Purchase Script" (Creazione di uno script di acquisto) nel tutorial su Unity IAP per un esempio di come implementare i flussi di acquisto di base.
La libreria Google Play Billing include anche alcune funzionalità esclusive del Google Play Store. Puoi accedere a queste funzionalità tramite un'interfaccia estesa. Il resto di questa sezione descrive come implementare queste funzionalità uniche della libreria Google Play Billing nel tuo gioco.
Attivare gli acquisti differiti
Google Play supporta gli acquisti differiti, chiamati anche transazioni in attesa o acquisti in attesa, in cui gli utenti possono creare un acquisto e completarlo in un secondo momento utilizzando contanti nei negozi.
Per attivare gli acquisti differiti, utilizza lo strumento di creazione IAP per modificare la configurazione del modulo chiamando il metodo EnableDeferredPurchase():
// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
.EnableDeferredPurchase();
Successivamente, implementa un callback degli acquisti differiti utilizzando le estensioni del Play Store:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
delegate(Product product)
{
// Do not grant the item here. Instead, record the purchase and remind
// the user to complete the transaction in the Play Store.
});
Trasferire ID account offuscati a Google Play
Puoi trasmettere a Google Play ID account utente offuscati per facilitare il rilevamento di abusi, ad esempio se molti dispositivi effettuano acquisti sullo stesso account in un breve periodo di tempo.
Per trasmettere un ID account offuscato, chiama il metodo SetObfuscatedAccountId()
dall'API Extensions:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);
Trasferire gli ID profilo offuscati a Google Play
Puoi trasmettere un ID profilo offuscato a Google Play per facilitare il rilevamento delle frodi, ad esempio per rilevare se molti dispositivi effettuano acquisti sullo stesso account in un breve periodo di tempo. Questa operazione è simile al passaggio di un ID account utente offuscato. In entrambi i casi, l'ID rappresenta un singolo utente, ma l'ID profilo consente di identificare in modo univoco un singolo utente in più profili che ha all'interno di una singola app. Dopo aver inviato un ID profilo offuscato a Google Play, puoi recuperarlo in un secondo momento in una ricevuta di acquisto.
Per passare un ID profilo offuscato, utilizza lo
strumento di creazione IAP per modificare la configurazione del modulo chiamando il
metodo SetObfuscatedProfileId():
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);
Confermare le variazioni di prezzo degli abbonamenti
Google Play ti consente di modificare il prezzo di un abbonamento
attivo. Gli utenti del tuo gioco devono confermare qualsiasi modifica del prezzo prima che possa avere effetto. Per
chiedere agli utenti di confermare una variazione di prezzo per il loro abbonamento, chiama il
metodo ConfirmSubscriptionPriceChange():
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
delegate (bool success)
{
// Returns whether the user has accepted the new price or not.
});
Modifiche al comportamento dell'API Unity
Quando utilizzi il plug-in Google Play Billing, la maggior parte delle API si comporta allo stesso modo dell'implementazione IAP standard di Unity per altri store. Tuttavia, in alcuni casi le API si comporteranno in modo diverso. Questa sezione descrive queste differenze di comportamento.
Il payload dello sviluppatore non è supportato
Google Play ha ritirato il payload dello sviluppatore e lo sta sostituendo con alternative più significative e contestuali. Per questo motivo, il payload dello sviluppatore non è supportato. Per ulteriori informazioni sulle alternative, consulta la pagina relativa al payload dello sviluppatore.
Puoi continuare a utilizzare le stesse interfacce definite dall'implementazione standard degli acquisti in-app di Unity per altri store, incluso IStoreController. Quando
avvii un acquisto, puoi comunque utilizzare IStoreController e chiamare il metodo
InitiatePurchase():
public void InitiatePurchase(Purchasing.Product product, string payload);
Tuttavia, qualsiasi payload che trasmetti non avrà effetto (non verrà visualizzato nella ricevuta finale).
SubscriptionManager non è supportato
Unity IAP fornisce la classe SubscriptionManager per la gestione degli abbonamenti. Poiché l'implementazione standard degli acquisti in-app di Unity di
questa classe utilizza il payload dello sviluppatore, questa classe non è supportata. Puoi comunque
creare questa classe, ma potresti ricevere dati inaffidabili quando utilizzi uno dei
metodi getter della classe.
UpdateSubscription presenta piccole modifiche all'API
Il plug-in Fatturazione Google Play non supporta l'utilizzo dei metodi
SubscriptionManager.UpdateSubscription() e
SubscriptionManager.UpdateSubscriptionInGooglePlayStore() per eseguire l'upgrade
e il downgrade degli abbonamenti. Se il tuo gioco chiama questi metodi, viene generata un'eccezione GooglePlayStoreUnsupportedException.
La Libreria Fatturazione Google Play fornisce un'API alternativa da utilizzare al posto di questi
metodi. Per eseguire l'upgrade o il downgrade di un abbonamento, chiama il metodo UpdateSubscription()
utilizzando la modalità di ripartizione proporzionale:
void UpdateSubscription(Product oldProduct, Product newProduct,
GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);
Puoi racchiudere questa chiamata al metodo in un controllo della piattaforma o in un blocco catch
quando viene rilevato GooglePlayStoreUnsupportedException.
Per ulteriori informazioni ed esempi su come utilizzare la modalità di proporzione, consulta Impostare la modalità di proporzione.