2009-12-21 13 views
11

Tengo una aplicación que deseo que los usuarios puedan pagar una pequeña tarifa para eliminar anuncios. Me imagino que la mejor manera de hacer esto (la aplicación debe seguir siendo gratis) es a través de una compra en la aplicación. Sin embargo, me pregunto cuál es la mejor manera de eliminar los anuncios y cómo hacerlo una vez que el usuario haya comprado la actualización. Cualquier ayuda o consejo sería genial gracias.Cómo eliminar anuncios cuando el usuario compra en la aplicación

Respuesta

13

Un booleano en NSUserDefaults parece ser la apuesta correcta. Puede verificarlo en el lanzamiento para ver si los anuncios deberían mostrarse, hacer que la aplicación oculte o mostrar anuncios en consecuencia y establecerlo en el valor apropiado cuando el usuario paga para deshabilitarlo.

Editado para añadir:

acabamos de ver this on the dev forums. Si está especialmente preocupado por los usuarios de los dispositivos liberados que manipulan su booleano NSUserDefaults, también puede almacenar los datos utilizando keychain. No se puede interferir con Keychain de la misma manera que NSUserDefaults. Más detalles en ese enlace.

Generalmente no creo en gastar mucho esfuerzo en cosas antipiratería, pero esta es una manera fácil de cubrirse que no cuesta mucho más que usar NSUserDefaults.

+0

si el usuario desinstala la aplicación y vuelve a instalarla, ¿qué ocurre? –

+0

Utilizaría StoreKit para volver a autorizar cualquier compra en la aplicación. –

-2

Bueno, este problema no es iphone limitado. Debe aplicar uno de los muchos algoritmos de seguridad. (No sé cómo se realiza la compra, pero haré una sugerencia) Puede, por ejemplo, después de la compra, hacer que la aplicación envíe el IMEI al servidor de compras que generará un código que la aplicación guardará. Luego, toda la aplicación comprobará si habilita/deshabilita los anuncios. (intente hacer el código con algún algoritmo de hash o similar)

Recuerde que todos los sistemas se pueden descifrar, así que no intente algo demasiado complejo que le cause dolor de cabeza a su usuario real.

+4

No puedo decir que estoy de acuerdo. De hecho, esto no solo es excesivo, es una mala idea. En primer lugar, no hay API para que una aplicación de iPhone obtenga el IMEI; todo lo que puede obtener es el UDID. En segundo lugar, el usuario puede muy bien reemplazar su teléfono en algún momento. La API StoreKit de iPhone SDK proporciona mecanismos para volver a autorizar la función desbloqueada en el hardware de reemplazo. Reinventar la rueda para una característica tan simple y desbloqueable no parece ser la decisión correcta. –

0

Otro enfoque sería registrar el recibo de SKPaymentTransaction recibido en la compra o restauración. En lanzamientos posteriores puede verificar ese recibo con la tienda de aplicaciones en segundo plano, vuelva a habilitar los anuncios para el siguiente lanzamiento si es necesario.

Verifying Store Receipts documentation

Mientras yo no creo que esto le protege de pegar en la recepción de un usuario válido de otra parte, es más difícil de eludir que alternar un valor lógico en las NSUserDefaults. Es improbable que alguien que llegue a este extremo pague por tu aplicación de todos modos.

+0

Lo que debe preocuparse aquí (creo) es que el usuario puede no tener una conexión de red cada vez que reinicia la aplicación. Si no tienen señal de celular o acceso a WiFi, la verificación no sería posible y el usuario obtendría anuncios, incluso si paga para eliminarlos. Supongo que no estarían muy contentos con eso. Ten cuidado. – Axeva

+0

En ese caso, recibirá un error de red en lugar de una respuesta de recibo. Tienes toda la razón; esto no debe interpretarse como una validación fallida. – mrwalker

+1

Si no tienen ningún tipo de conexión de red, tampoco recibirán ningún anuncio. – Scooter

Cuestiones relacionadas