2011-05-13 14 views
5

Hola Estoy creando una aplicación de compra de aplicaciones inapp. Mi aplicación tiene un modelo incorporado. Tiene una vista de tabla que tiene 6 elementos. En la aplicación gratuita, hay 3 elementos disponibles y quiero bloquear 3 elementos. La gente puede desbloquear los tres artículos simplemente haciendo una sola transacción de $ 0.99.En aplicaciones Desbloqueo de compras Características

Quiero crear un archivo plist en mi aplicación que contendrá un indicador. Si flag = 0, bloquea algunas funciones y si flag = 1 desbloquea todo. Mi lista contendrá solo una "bandera" que puede ser 0 o 1.

No sé cómo crear un archivo plist. ¿Dónde debería guardar un archivo plist para que los clientes no puedan acceder a él? ¿Debo guardarlo en la carpeta de recursos?

Después de SKTransactionStateComprado, quiero cambiar el indicador en el archivo .plist. ¿Puede darme el código que cambiará el valor de la bandera de 0 a 1 en el archivo flag.plist?

Gracias.

Respuesta

2

Creo que usted debe buscar otro enfoque para resolver el problema, por un par de razones:

  • plists pueden ser editados por cualquier persona que tenga acceso al sistema de archivos interno iOS: que incluye jailbreakers y hay cierta herramientas que permiten a los que no son jailbreakers acceder también a él.
  • La edición de un plist con código requiere permisos. Su aplicación solo tiene permisos de edición en su carpeta Documentos. Dicho esto, alguien podría hacer fácilmente una aplicación de jailbreak para acceder a la carpeta de documentos de su aplicación y editar su valor con bastante facilidad.

Mis disculpas por no responder directamente a su pregunta, pero el almacenamiento de ese tipo de cosas en los documentos que utiliza la aplicación es realmente una mala idea. Le recomiendo que busque métodos alternativos para hacer esto (como usar su propio servidor).

+0

Bueno, soy un individuo, no una empresa y no tengo servidores ni un sitio web. Tampoco quiero pagar por ellos. Sé que hay varias otras personas que están creando aplicaciones de compra de aplicaciones. ¿Qué método utilizan ellos si no están utilizando el método plist? ¿Cuál es un enfoque común de hacerlo? – chits12345

+0

Yo mismo hice una compra en la aplicación, pero sé un par de cosas; que la gente usa su propio servidor, y a veces sí, "desbloquean" la aplicación. Sin embargo, no estoy exactamente seguro sobre el último método, porque todo lo que se puede diseñar puede ser de ingeniería inversa. Me gustaría investigar el uso de NSUserDefaults si fuera tú, pero siempre usando algún tipo de descripción. –

+0

(void) provideContent: (NSString *) ProductId { si ([ProductID isEqualToString: kInAppPurchaseProUpgradeProductId]) { [[NSUserDefaults standardUserDefaults] setBool: SÍ forKey: @ "isProUpgradePurchased"]; [[NSUserDefaults standardUserDefaults] synchronize]; } } Si utilizo este código, ¿significa que estoy configurando un indicador "IsProUpgradeComprado" en NSUserDefaults que no puede ser accedido y modificado por el usuario que realiza una compra o por jailbreakers. ¿Necesito un servidor para implementar NSUserDefaults? – chits12345

2

Para responder realmente a su pregunta:

Después SKTransactionStatePurchased, a llamar a

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setInteger:1 forKey:@"yourKey"]; 
[defaults synchronize]; 

yourkey puede haber nada de su propia elección. Probablemente es mejor usar palabras sin sentido y aleatorias para que los piratas informáticos no se den cuenta de que está relacionado con la compra en la aplicación.

Cuestiones relacionadas