ios objective-c in-app-purchase ios8 non-renewing-subscription

ios - Suscripción no renovada Ya se compró seguimiento de alerta



objective-c in-app-purchase (2)

Estoy implementando un IAP de suscripción sin renovación en la aplicación donde estoy haciendo la implementación del servidor para que caduque una suscripción. Me quedo atascado cuando hago clic en una suscripción que ya he comprado. Muestra un cuadro de diálogo, "Esta compra en la aplicación ya se ha comprado. Se restaurará de forma gratuita". con el botón OK. Tengo dos preguntas aquí:

  1. En algún momento muestra el cuadro de diálogo anterior, pero a veces muestra "Pulse comprar para renovarlo o ampliarlo". diálogo. ¿Alguien puede decirme cuál es la razón detrás de esto? O es solo un problema de Sandbox. ( Esta captura de pantalla de otro hilo. )
  2. Cuando obtengo "Esta compra en la aplicación ya se ha comprado. Se restaurará de forma gratuita". alerta, ¿cómo puedo parar indicador de actividad? ¿Hay un método de delegado para seguir esto?

No pude encontrarlo, ¿hay algo nuevo en iOS 8 ?

Gracias


  1. Para una suscripción no renovable, el cuadro de diálogo correcto es "Pulse comprar para renovarlo o ampliarlo". . La razón de esto es que una vez que se posee un producto no consumible, se le posee de forma permanente; De ahí el lenguaje "renovar o ampliar".

  2. Está recibiendo este cuadro de diálogo porque está intentando comprar el mismo producto nuevamente antes de completar la transacción en el lado de la aplicación . La App Store aprobó la transacción y le envió un ID de transacción, pero no ha confirmado que haya entregado el contenido / acceso prometido. Por lo tanto, la transacción se deja en el estado approved . La transacción permanece vinculada a la aplicación hasta que la termines.

Consulte "Finalización de la transacción" en la documentación de Apple (confusa y complicada) .


Encontré este problema en el IAP de consumibles y llamé a la función [[SKPaymentQueue defaultQueue] finishTransaction:transaction] . Luego descubrí que se produjo una excepción en una función antes de la llamada, luego cambio la posición de dos funciones, el problema se resuelve ahora.