Italian Proteggere l'APP sul market

Star-Dust

Expert
Licensed User
Longtime User
Passo 3: (Nel Codice)

B4X:
Sub CompraProdotto(skuProduto As String)
    Manager.RequestPayment(skuProduto,"inapp",skuProduto)
End Sub

Sub Manager_BillingSupported (Supported As Boolean, Message As String)
   Log(Supported & ", " & Message)
   Log("Subscriptions supported: " & Manager.SubscriptionsSupported)
    If Supported Then Manager.GetOwnedProducts
End Sub

Sub Manager_OwnedProducts (Success As Boolean, purchases As Map)
    If Success Then
        Log(purchases)
        For Each p As Purchase In purchases.Values
            ' Elenco prodotti acquistati
            Log(p.ProductId & ", Purchased? " & (p.PurchaseState = p.STATE_PURCHASED))
            If p.ProductId="completo1" and p.PurchaseState = p.STATE_PURCHASED then
                 ' Acquistato
                 AttivaCompleta=True
            End If
        Next
    End If
  End Sub

Sub Manager_PurchaseCompleted (Success As Boolean, Product As Purchase)
    'Após concluir a compra, atualizar o banco de dados e o MAP com as compras do usuário
    ToastMessageShow(Success,False)
    If Success Then
        'Acquisto completato
        ' Nel caso di prodotti che vengono consumati e vanno riacquistati
        ' Nel caso che si fa un acquisto unico per attivare l'App e non va riacquistato più il prodotto allora non va aggiunto il ConsumerProduct
        Manager.ConsumeProduct(Product)
    End If
End Sub

Sub Manager_ProductConsumed (Success As Boolean, Product As Purchase)
   Log("Comprato prodotto e consumato: "& Product.ProductId)
   'pronto per un nuovo acquisto dello stesso prodotto
End Sub
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Passo 4:

Acquistare il prodotto:
B4X:
CompraProdotto("completa1")  'Nome del prodotto scelto da acquistare
 

Fabri

Member
Licensed User
Ok. Allora la App è già pubblicata (possono avere problemi quei pochi che l hanno già acquistata se introduco questo controllo? )
 

Star-Dust

Expert
Licensed User
Longtime User
Ok. Allora la App è già pubblicata (possono avere problemi quei pochi che l hanno già acquistata se introduco questo controllo? )
No, solo che dopo la devi passare aggratis. Questo perché altrimenti La pagano 2 volte, all'acquisto dell'App e poi con AppInBilling

Cmq per adesso mettilo in versione Beta e i clienti non riceveranno nulla. Ti iscrivi il tuo account gmail come Beta Tester e ricevi solo tu l'aggiornamento e puoi testarlo.

Se il meccanismo funziona lo metti gratis e lo pubblici definitivo.
I pagamenti richiesti sulal tua carta di credito come BetaTester sono fittizzi in realtà non verranno presi soldi , ma ti arrivera messaggio di prelievo.
E comunque potrai rimborsare chi vuoi come un qualunque acquisto
 

Fabri

Member
Licensed User
No, solo che la devi passare aggratis adesso perché senno devono pagare per acquistare e pagare di nuovo con AppInBilling.

Cmq per adesso mettilo in versione Beta e i clienti non riceveranno nulla. Ti iscriti il tuo account come Beta Tester e lo ricevi solo tu l'aggiornamento e puoi testarlo.

Scusami ma non ho capito. Devo mettere in BETA quella che sto inserendo di nuovo oppure quella già sullo store?
 

Star-Dust

Expert
Licensed User
Longtime User
Scusami ma non ho capito. Devo mettere in BETA quella che sto inserendo di nuovo oppure quella già sullo store?
1) Per adesso pubblicalo come versione Beta. Fra l'elenco dei tester aggiungi il tuo account gmail cosi sarai un beta tester. Ti arriverà un email che dovrai accettare. Cosi diventi un BetaTester e riceverai l'aggiornamento alla versione beta che dovrà avere un numero di versione superiore a quella di distribuzione

2) Se il meccanismo funzione l'App la devi ttrasformare da App a pagamento ad App Gratuita, dalla consolle. Perchè il cliente deve pagare una sola volta su AppInBilling. Avrà l'App gratis e pagherà per ativarla.

3) Quando l'App avvia controlla se ha acquistato, nel caso la variabile AttivaCompleta che vedi nel codice sarà impostata a True.
Infatti nel PASSO 2 c'é questo codice:
B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    'Activity.LoadLayout("Layout1")
 
    If FirstTime Then
        Manager.Initialize("Manager", keyRSA)
        Manager.DebugLogging = True 
    End If
    if AttivazioneCompleta = false then
        AcquistaProdotto("completo1")
    Else
        'Avvia l'app completa - Magari fa partire un Activity a parte o abilita funzioni speciali
    End IF
End Sub


Il resto fattelo spiegare dagli altri :p
 

Fabri

Member
Licensed User
ho copiato il passo 3 perchè i passi 1 e 2 li avevo capiti dal forum di EREL. Ero stato abbastanza bravo. Ora ho copiato il codice del passo 3 ma mi dà questi errori:
Syntax Error;
'next' expected
Illegal first word in line
Missing Keyword; endif
 

Fabri

Member
Licensed User
Hai ragione sei stato anche troppo paziente. Ma se devo metterla gratuita poi come faccio ad indicare un prezzo nel Play STore?
Ora domattina mi studio tutte le tue dritte...:eek:
 

Star-Dust

Expert
Licensed User
Longtime User
ho copiato il passo 3 perchè i passi 1 e 2 li avevo capiti dal forum di EREL. Ero stato abbastanza bravo. Ora ho copiato il codice del passo 3 ma mi dà questi errori:
Syntax Error;
'next' expected
Illegal first word in line
Missing Keyword; endif
Prima di Next c'é END che va cambiato in END IF
 

Star-Dust

Expert
Licensed User
Longtime User
Hai ragione sei stato anche troppo paziente. Ma se devo metterla gratuita poi come faccio ad indicare un prezzo nel Play STore?
Ora domattina mi studio tutte le tue dritte...:eek:
Apparirà al momento dell'acquisto e nella Pagina dello Store, come prodotti in acquisto. E potrai specificarlo nella pagina di presentazione.
 

Fabri

Member
Licensed User
AttivaCompleta dello step3 me la dà come variabile non dichiarata...un'altra trappolina?
dove vado a dichiararla e come?
 

Star-Dust

Expert
Licensed User
Longtime User
AttivaCompleta dello step3 me la dà come variabile non dichiarata...un'altra trappolina?
dove vado a dichiararla e come?
E' solo una variabile Globale, ma puoi scegliere qualunque altro metodo.
Come vedi restituisce una Map con tutti gli acquisti fatti da quell'App, immaginando che hai inserito solo un prodotto nel tuo caso allora basta una variabile che permette all'avvio di capire se c'é stato un acquisto o meno.
 

Star-Dust

Expert
Licensed User
Longtime User
Puoi fare anche cosi
B4X:
Sub Manager_OwnedProducts (Success As Boolean, purchases As Map)
    If Success Then
        Log(purchases)
        For Each p As Purchase In purchases.Values
            ' Elenco prodotti acquistati
            Log(p.ProductId & ", Purchased? " & (p.PurchaseState = p.STATE_PURCHASED))
            If p.ProductId="completo1" and p.PurchaseState = p.STATE_PURCHASED then
                 ' Acquistato Avvia l?Activity completa
                StartActivity(ActivityAppCompleta)
            End If
        Next
    End If
  End Sub

E' solo un metodo, tu pensano uno tuo se vuoi.
Verificato l'acquisto deve avviare l'App comleta. Oppure se non c'é l'acquisto deve proporlo.
 

Star-Dust

Expert
Licensed User
Longtime User
Cambi mestiere? :rolleyes:
 

Fabri

Member
Licensed User
:pno...sto hackerando il sito b4a per scoprire il tuo indirizzo, così passo a trovarti e se ho dei dubbi ( e ce ne sono ancora diversi :oops:) te li chiedo direttamente...
Si sta chattando nel forum (non comunità, quella è altra roba) e magari siamo vicini di casa :D:D:D
 

Star-Dust

Expert
Licensed User
Longtime User
:pno...sto hackerando il sito b4a per scoprire il tuo indirizzo, così passo a trovarti e se ho dei dubbi ( e ce ne sono ancora diversi :oops:) te li chiedo direttamente...
Si sta chattando nel forum (non comunità, quella è altra roba) e magari siamo vicini di casa :D:D:D
Non credo, io abito in Africa e l'ultimo convoglio carico di giumente è già partito :D
 

Fabri

Member
Licensed User
Allora viviamo vicini davvero. Ogni mattina vedo un sacco di ragazzi di colore che vengono a lavoro in bici. Quindi l'Africa non dev'essere lontana.
 

Star-Dust

Expert
Licensed User
Longtime User
Esattamente, io sto in mezzo
 
Top