¿Cuándo usar restoreCompletedTransactions para compras dentro de la aplicación?

Para una aplicación básica con compras no consumibles dentro de la aplicación, alguien ha descubierto las mejores prácticas para usar SKPaymentQueue'srestoreCompletedTransactions?

Observaciones

Sé que se recomienda registrar siempre un observador de transacciones para recibir transacciones pendientes que regresan a la aplicación, pero esta es una pregunta diferente. Parece querestoreCompletedTransactions Es algo que la aplicación tiene que decidir activamente cuándo llamar para sondear todas las compras que el cliente ya ha realizado.

Por lo que puedo decir, el método está diseñado para recuperar las compras que se hayan perdido. Por ejemplo, un cliente puede instalar o mover una aplicación a un nuevo dispositivo de tal manera que los registros locales de pagos anteriores de la aplicación se pierdan o se restauren.

Preocupaciones

Lo que no me queda claro es cómo detectar automáticamente esta condición (es decir, cómo decidir cuándo sondear las compras faltantes) de manera confiable. No quiero arruinar esto y arriesgarme a negar a un cliente el acceso a las funciones que ya han pagado.

Al mismo tiempo, no quiero llamarrestoreCompletedTransactions Cada vez que la aplicación se lanza solo para estar segura y, básicamente, recuperar transacciones que ya conozco aproximadamente el 99.9% del tiempo. (Excepto la compra en la aplicación, mi aplicación no requiere ninguna conectividad de red).

Notas

La documentación de Apple aclara que a los clientes no se les cobra nuevamente por las compras no consumibles que ya hayan realizado. Si intentan volver a comprar, una transacción de pago aún se envía supuestamente a la aplicación.

En el peor de los casos, un cliente podría recuperar las compras de esta manera, pero aún así me gustaría evitar seguirlos por un camino que se asemeja a volver a comprar algo que ya han pagado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta