2012-05-03 21 views
9

Proporciono un elemento no consumible en mi aplicación.Cómo comprobar si el usuario ya ha descargado un elemento no consumible Compra de Inapp

supongamos que el usuario compra ese artículo e intenta instalar esa aplicación en otro dispositivo con el mismo ID. Si el usuario ha iniciado sesión y ya ha comprado ese artículo, quiero mostrarle un mensaje emergente y decirle al usuario que ya lo ha comprado, así que descárguelo gratis ahora. Lo que sucede ahora es cuando hago clic para comprar el artículo nuevamente. dice que ya has comprado ese elemento, haz clic para descargarlo.

¿Hay alguna forma de obtener los datos de inicio de sesión del usuario y verificar si el usuario ya realizó la compra desde la aplicación o no?

hay un problema cuando inicio sesión y trato de comprar el artículo ya comprado. dos tipos de vista de alerta aparecen ocasionalmente. estoy usando el entorno de sandbox.

  1. ya ha comprado esto, pero no ha sido downloaded.Tap OK para descargar ahora. este punto de vista de alerta tiene botón sólo está bien .cuando apretamos el control Ok va a - (void) failedTransaction: (SKPaymentTransaction *) transacción

  2. ya ha comprado this.Tap Aceptar para descargarlo de nuevo para free.This de alerta view tiene dos botones, uno es Cancelar y otro está bien. Al presionar el botón OK, el control pasa a - (nulo) completar Transacción: (SKPaymentTransaction *) transacción que está bien.

Una idea de por qué la transacción está mostrando este peculiar comportamiento.

gracias

Respuesta

6

que no entiendo por qué cree que tienen que hacer nada diferente.

Como usted dijo, el sistema detecta que el usuario ya posee el producto y le da al usuario una alerta de "haga clic para descargar". Si el usuario elige descargar, obtiene un SKPaymentTransaction cuyo estado es "comprado" o "restaurado" (se me olvida cuál). Luego, simplemente proporcione el producto como siempre. Entonces, el usuario sabe que no lo van a cargar por segunda vez, y él obtiene el producto.

Si está diciendo que desea detectar automáticamente los productos que posee el usuario, sin que el usuario tenga que hacer nada: solo puede hacerlo enviando restoreCompletedTransactions al SKPaymentQueue. Cuando haces eso, el usuario puede tener que ingresar su contraseña de iTunes. Prefiero simplemente tener un botón "restaurar compras" en mi UI, para que el usuario sepa por qué se le está pidiendo su contraseña.

+0

he editado mi pregunta. ahora ha venido otro problema. ¿Puedes ayudarme? – rocksvick

+0

¿tienes alguna idea? ¿Por qué este comportamiento diferente en diferentes ocasiones en el entorno de sandbox? – rocksvick

+0

No tengo idea. No he visto ese problema. –

0

Parece que hay muchos problemas de estabilidad con Sandbox; consulte este tema https://devforums.apple.com/thread/164500?tstart=0 en el Apple Developer Forum (es necesario iniciar sesión). He estado probando una compra en la aplicación con un consumible y nunca he visto el caso 2, obtengo solo el caso 1 (tal como se menciona en el foro). Así que se podría considerar afortunado para conseguir incluso 2) de vez en cuando :(

0

haber enfrentado tanto problema, he siguientes pensamientos sobre ellos

1] Muchos desarrolladores, incluido yo, solucionado primer problema reiniciando el dispositivo.

2] Para un segundo problema, ya que las devoluciones de llamadas "compradas" o "restauradas" se requieren al grabar "OK" para que el producto esté disponible, por sí mismo.

Espero que ayude!

Cuestiones relacionadas