iOS In-App Purchase No Back-end

Estoy investigando el uso de la compra en la aplicación para lo que esencialmente sería una versión "profesional" de mi aplicación. La aplicación en sí sería gratuita, pero una vez en el usuario tiene la opción de comprar el contenido profesional (solo 1 cosa). El contenido "pro" ya estaría en la aplicación y no hay necesidad de downloadlo, simplemente lo "desbloqueará".

  1. ¿Esto está permitido desde las pautas de Apple?
  2. Como solo se compraría 1 no consumible, creo que no se requiere el uso de un server de back-end.
    • De nuevo, ¿está permitido desde las pautas?
    • ¿Y es seguro y simple simplemente almacenar el resultado en NSUserDefaults y si está instalado en otro dispositivo, extraerlo del restablecimiento de SKPayment comprado y tal?

He mirado varias otras preguntas.

  • Compras en la aplicación?
  • Recuperar información adquirida en la compra en la aplicación.
  • ¿Cómo agrego consumibles en las compras de la aplicación usando NSUserDefaults y no mi propio server?

Y esos parecen sugerir que mi enfoque es válido, pero como sé que esas cosas han cambiado recientemente, quiero asegurarme de que estoy tomando el enfoque correcto.

¡Gracias!

  1. No hay problema con el contenido incorporado.

  2. La mejor práctica es realizar la verificación de recibos en un server con un protocolo de authentication entre la aplicación y el server (esto también es cierto para varias otras tiendas de aplicaciones mobilees). Si realiza la verificación en el dispositivo, las personas pueden usar las herramientas existentes para desplazarse por su IAP y robar contenido. Eche un vistazo a https://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/ para get más información.

Entonces, mientras que no se requiere un server, se recomienda. Solo tú puedes decir si proteger tu contenido vale la molestia de mantener un server.

Estoy de acuerdo con J. Freeman en que el almacenamiento directo en NSUserDefaults parece débil. Almaceno cosas en un file local, pero el formatting está vinculado al dispositivo y requiere una key computada por el server para crearlo. Finalmente, sí, debe usar SKPaymentQueue restreCompletedTransactions para comprar cosas en otro dispositivo. Tenga en count que las transactions restauradas también deben tener sus recibos verificados en su server.

Sí, eso está bien. No necesita un back-end para realizar compras en la aplicación, y está bien enviarlo con su contenido incorporado.

Lo único que diría que tenga cuidado es almacenar la información de deslocking en NSUserDefaults ya que alguien podrá falsificar fácilmente las compras de esa manera. Debe almacenar la información de deslocking en el llavero.