2009-12-21 3 views
11

Ho un'app che voglio che gli utenti siano in grado di pagare una piccola tassa per rimuovere gli annunci da. Immagino che il modo migliore per farlo (l'app deve rimanere libera) è tramite un acquisto in-app. Mi chiedo tuttavia il modo migliore per rimuovere gli annunci e come farlo una volta che l'utente ha acquistato l'aggiornamento. Qualsiasi aiuto o consiglio sarebbe fantastico, grazie.Come rimuovere gli annunci quando l'utente compra l'acquisto in-app

risposta

13

Un booleano in NSUserDefaults sembra la soluzione giusta. Puoi controllarlo all'avvio per vedere se gli annunci devono essere visualizzati, far sì che l'app nasconda o mostri gli annunci di conseguenza e impostalo sul valore appropriato quando l'utente paga per disabilitarlo.

A cura di aggiungere:

appena visto this on the dev forums. Se sei particolarmente preoccupato per gli utenti su dispositivi jailbroken che armeggiano con il tuo booleano NSUserDefaults, puoi in alternativa memorizzare i dati utilizzando il portachiavi. Non è possibile utilizzare il portachiavi allo stesso modo di NSUserDefaults. Maggiori dettagli a questo link.

In genere non credo di spendere molto per le attività antipirateria ma questo è un modo semplice per coprirsi che non costa molto più dell'utilizzo di NSUserDefaults.

+0

se l'utente disinstalla l'app e installa di nuovo allora cosa succede? –

+0

Utilizzerai StoreKit per autorizzare nuovamente gli acquisti in-app. –

-2

Bene, questo problema non è limitato all'iPhone. Dovresti applicare uno dei tanti algoritmi di sicurezza. (Non so come è stato effettuato l'acquisto ma farò un suggerimento) Ad esempio, dopo l'acquisto, l'app invia l'IMEI al server di acquisto che genererà un codice che l'app salverà. Quindi tutta l'app controllerà per abilitare/disabilitare gli annunci. (prova a creare il codice con un algoritmo di hashing o simili)

Ricorda che tutti i sistemi possono essere decifrati quindi non provare qualcosa di troppo complesso che ti darà il tuo vero mal di testa.

+4

Non posso dire di essere d'accordo. In realtà, questo non è solo eccessivo, è una cattiva idea. Prima di tutto, non c'è API per un'app per iPhone per ottenere l'IMEI: tutto ciò che puoi ottenere è l'UDID. In secondo luogo, l'utente può benissimo sostituire il proprio telefono ad un certo punto. L'API StoreKit dell'iPhone SDK fornisce meccanismi per autorizzare nuovamente la funzione sbloccata sull'hardware sostitutivo. Reinventare la ruota per una funzione così semplice e sbloccabile non sembra la giusta chiamata. –

0

Un altro approccio sarebbe quello di registrare la ricevuta da SKPaymentTransaction ricevuta all'acquisto o al ripristino. Nei lanci successivi è possibile verificare la ricezione con l'app store in background, riattivare gli annunci per il successivo avvio, se necessario.

Verifying Store Receipts documentation

Mentre io non credo che questo vi protegge da incollare in ricezione una valida dell'utente da altrove, è più difficile da aggirare che alterna un valore booleano nei NSUserDefaults. Chiunque vada in questa lunghezza è improbabile che paghi comunque la tua app.

+0

La cosa di cui devi preoccuparti qui (credo) è che l'utente potrebbe non avere una connessione di rete ogni volta che riavvia l'app. Se non hanno segnale cellulare o accesso WiFi, la verifica non sarebbe possibile e l'utente otterrebbe annunci, anche se pagati per rimuoverli. Immagino che non sarebbero troppo contenti per questo. Stai attento. – Axeva

+0

In tal caso, si riceverà un errore di rete anziché una risposta di ricevuta. Hai perfettamente ragione; questo non dovrebbe essere interpretato come una validazione fallita. – mrwalker

+1

Se non hanno alcun tipo di connessione di rete, non riceveranno neanche alcuna pubblicità. – Scooter