Utilizzare la Libreria Fatturazione Google Play con Unity

Il plug-in Fatturazione Google Play estende i servizi integrati di Unity e asset per gli acquisti in-app, denominati Unity IAP, per fornire il tuo gioco con tutte le funzionalità più recenti della Libreria Fatturazione Google Play. Questo spiega come impostare il tuo progetto per l'utilizzo del plug-in. Questa guida descrive come implementare le funzionalità della Libreria Fatturazione Google Play nel tuo gioco in Unity.

Configurazione del plug-in Fatturazione Google Play

Per impostare il plug-in, completa i passaggi in ognuna delle seguenti sezioni collegate:

  1. Attiva il livello di astrazione IAP di Unity.
  2. Scarica e importa il plug-in.
  3. Configura le impostazioni di compilazione del plug-in.
  4. Attiva il plug-in.

Attiva il livello di astrazione IAP di Unity

Il plug-in Fatturazione Google Play è basato su un livello di astrazione incluso Unity IAP, quindi devi abilitare questo livello di astrazione prima di scaricarlo e importare il plug-in. Per attivare il livello di astrazione IAP di Unity, procedi nel seguente modo: seguenti:

  1. Completa tutti i passaggi del seguente tutorial Unity: Configurare il progetto per i servizi Unity.
  2. Completa tutti i passaggi del seguente tutorial Unity: Abilitazione di Unity IAP Google Cloud.

Scaricare e importare il plug-in

Il plug-in viene fornito come pacchetto Unity nella Formato .unitypackage. Per scaricare e importare il plug-in, procedi nel seguente modo:

  1. Scarica la versione più recente dei plug-in di Google Play per Unity dal repository su GitHub.
  2. Nella barra dei menu Unity, fai clic su Asset > Importa pacchetto > Pacchetto personalizzato.

  3. Individua dove hai scaricato il file .unitypackage e selezionalo.

  4. Nella finestra di dialogo Importa pacchetto Unity, lascia selezionati tutti gli asset e fai clic su Importa.

Una volta importato il pacchetto, viene creata una nuova cartella denominata GooglePlayplugin (nel principale della cartella Asset) viene aggiunta agli asset del progetto. Questa cartella contiene tutti gli asset della Libreria Fatturazione Google Play per il plug-in.

Configura le impostazioni della build

Poiché il plug-in estende Unity IAP, Unity riscontrerà conflitti e non creare un APK Android a meno che non ci siano dipendenze meno recenti che si sovrappongono in Unity (IAP) vengono rimossi dalla build. Il plug-in fornisce un modo automatico per rimuovere librerie in conflitto dal tuo progetto. Per risolvere questi conflitti: questi passaggi:

  1. Dalla barra dei menu Unity, seleziona Google > Fatturazione Play > Impostazioni build.

  2. Nella finestra Impostazioni build di Fatturazione Play, fai clic su Correggi. Questo risolve un conflitto e sposta i file IAP Unity in conflitto in una directory di backup. Dopo il giorno fai clic su Correggi, il pulsante diventa Ripristina, che puoi selezionare ripristinare i file originali in conflitto.

Attiva il plug-in

Per attivare il plug-in, sostituisci l'implementazione di Unity IAP di Google Play con il Plug-in Fatturazione Google Play. Ad esempio, se utilizzi l'attributo acquirente IAP Unity script, modificherai il StandardPurchaseModule trasferito allo strumento di creazione 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 acquirente per più piattaforme, deve aggiungere un controllo della piattaforma per assicurarsi che Unity continuerà a utilizzare le sue soluzione IAP proprietaria per 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 diversi da Google Play Google Store, devi sostituire l'implementazione IAP di Unity predefinita solo quando stai selezionando il 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 Fatturazione Google Play estende i servizi IAP Unity, quindi puoi utilizzare le stesse API Unity per gestire i flussi di lavoro più comuni per l'acquisto. Tieni presente che ci sono alcune modifiche di minore entità al comportamento delle API a causa delle differenze tra la Libreria Fatturazione Google Play e gli IAP standard di Unity per altri store. Se non hai mai utilizzato le API IAP Unity, consulta la sezione "Effettuare un acquisto" dell'IAP Unity tutorial per un esempio di come implementare i flussi di acquisto di base.

La Libreria Fatturazione Google Play include anche alcune funzionalità uniche del Play Store. Puoi accedere a queste funzionalità tramite un'interfaccia estesa. La il resto di questa sezione descrive come implementare questa unica Libreria Fatturazione Google Play funzionalità nel tuo gioco.

Attiva acquisti differiti

Google Play supporta gli acquisti differiti, chiamati anche in attesa. trasacations o in attesa Acquisti, in cui gli utenti possono creare un acquisto e completarlo in un secondo momento utilizzando i pagamenti in contanti negozi.

Per abilitare gli acquisti differiti, utilizza il tuo builder IAP per modificare il di fatturazione 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 il callback per gli acquisti differiti utilizzando le estensioni 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.
    });

Trasmettere ID account offuscati a Google Play

Puoi passare gli ID account utente offuscati a Google Play per agevolare gli abusi il rilevamento, ad esempio se molti dispositivi effettuano acquisti sullo stesso servizio. in un breve periodo di tempo.

Per passare 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);

Trasmettere gli ID profilo offuscati a Google Play

Puoi passare un ID profilo offuscato a Google Play per facilitare le attività fraudolente il rilevamento, ad esempio se molti dispositivi effettuano acquisti sullo stesso servizio. in un breve periodo di tempo. È un processo simile al passaggio di un modello offuscato dell'account utente. In entrambi i casi, l'ID rappresenta un utente singolo, ma l'ID profilo ti consente di identificare in modo univoco un singolo utente su diversi profili disponibili all'interno di un'unica app. Dopo aver inviato un dell'ID profilo offuscato in Google Play, puoi recuperare quell'ID in un secondo momento ricevuta di acquisto.

Per passare un ID profilo offuscato, utilizza Builder IAP per modificare la configurazione del modulo chiamando il metodo 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);

Conferma le variazioni di prezzo degli abbonamenti

Google Play ti consente di modificare il prezzo di un abbonamento. Il tuo gli utenti del gioco devono confermare qualsiasi variazione di prezzo prima che la modifica abbia effetto. A chiedere agli utenti di confermare una variazione di prezzo per l'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 Fatturazione Google Play, la maggior parte delle API si comporta analoga all'implementazione IAP standard di Unity per altri store. Tuttavia, ci sono casi in cui le API si comportano diversamente. Questa sezione descrivono queste differenze di comportamento.

Payload dello sviluppatore non supportato

Google Play ha ritirato il payload degli sviluppatori e lo sostituirà con alternative più significative e contestuali. Per questo motivo, il payload dello sviluppatore non supportati. Per ulteriori informazioni sulle alternative, consulta la pagina relativa alle Payload sviluppatore.

Puoi continuare a utilizzare le stesse interfacce definite dallo standard di Unity Implementazione IAP per altri store, tra cui IStoreController. Quando avviare un acquisto, puoi comunque utilizzare IStoreController e chiamare il Metodo InitiatePurchase():

public void InitiatePurchase(Purchasing.Product product, string payload);

Tuttavia, qualsiasi payload trasferito non avrà effetto (non apparirà nel la ricevuta finale).

SubscriptionManager non è supportato

Unity IAP fornisce la SubscriptionManager per la gestione degli abbonamenti. Poiché l'implementazione IAP standard di Unity questa classe utilizza un payload dello sviluppatore, questa classe non è supportata. Puoi ancora creare questa classe, ma potresti ricevere dati inaffidabili quando utilizzi uno i metodi getter della classe.

UpdateSubscription presenta piccole modifiche all'API

Il plug-in Fatturazione Google Play non supporta l'utilizzo del SubscriptionManager.UpdateSubscription() e SubscriptionManager.UpdateSubscriptionInGooglePlayStore() metodi per eseguire l'upgrade ed eseguire il downgrade degli abbonamenti. Se il gioco chiama questi metodi, GooglePlayStoreUnsupportedException viene lanciata.

La Libreria Fatturazione Google Play fornisce un'API alternativa da utilizzare al posto di queste di machine learning. Per eseguire l'upgrade o il downgrade di un abbonamento, chiama il UpdateSubscription() utilizzando la modalità proporzionale:

void UpdateSubscription(Product oldProduct, Product newProduct,
           GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);

Puoi aggregare questa chiamata al metodo con un controllo della piattaforma o in un blocco catch quando GooglePlayStoreUnsupportedException viene catturata.

Per ulteriori informazioni ed esempi su come utilizzare la modalità di ripartizione, consulta Impostare modalità proporzionale.