Xcode: ocultar / proteger files de resources en la aplicación final de iOS?

Planeo desarrollar una aplicación para iOS y quiero usar HTML5, CSS y Javascript. La aplicación final debe implementarse como una aplicación nativa que utiliza Xcode y UIWebView .

¿Puedo ocultar o proteger mis files html en la aplicación final? Tengo que poner los files en la carpeta llamada "Archivos de soporte" en Xcode. Por lo tanto, todos pueden ver los files simples después de comprar la aplicación extrayendo el file .ipa, ¿verdad?

Existen muchas forms de proteger sus datos, dependiendo de qué tan bueno desee que sea la protección. Para una protección muy mínima contra solo hackers ocasionales, puede usar un algorithm de ofuscación de cadenas para ofuscar y NSString ofuscar el contenido HTML como NSString . Aquí hay un ejemplo de hacer eso . No he usado ese código en particular, pero tampoco estoy recomendando la ofuscación como una técnica, a less que los datos realmente no sean muy sensibles.

La mejor solución es encriptar el contenido HTML, aunque eso es más trabajo, y puede implicar algunos problemas de control de export , según dónde se encuentre y dónde distribuya su aplicación.

Para el encryption, tienes muchas opciones.

1) Aquí hay una implementación de código abierto que proporciona una versión segura de algo como NSUserDefaults . No veo un equivalente a registerDefaults: en ese código, sin embargo, es posible que la primera vez que se ejecute su aplicación, tenga que download el contenido de la web. Pero, entonces podría cifrarlo y almacenarlo en PDKeychainBindings como un valor de cadena. En ejecuciones posteriores, podría extraer los "files" HTML almacenados de esta forma:

 NSString* webPageContent = [[PDKeychainBindings shanetworkingKeychainBindings] valueForKey: @"index.html"]; 

2) Aquí hay otro proyecto de código abierto que proporciona envoltorios de encriptación AES . Escribirá un código que no sea de producción antes de lanzar su aplicación para cifrar el contenido HTML en files de datos encriptados que serían resources de package. Cuando su aplicación se ejecuta, abre los files y los descifra en objects NSString que se pueden dar a su UIWebView través de loadHTMLString: baseURL: .

3) Finalmente, aquí hay otro ejemplo de uso de las API CommonCrypto subyacentes para proteger los resources de packages . Este ejemplo usa un paso de compilation personalizado para encriptar automáticamente los resources en una carpeta particular, lo que le ahorraría algo de time si su contenido HTML protegido va a cambiar razonablemente.

Puede cifrar los files y descifrarlos en time de ejecución o no puede includelos en su package y tener un script de time de compilation que los lea y los convierta en datos codificados en su aplicación que puede cargar en su UIWebView con:

 - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL 

Podría crear todo su HTML y así sucesivamente también dentro de su código y luego usar UIWebView 's

 - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL 

cargar manualmente cada cadena HTML como text sin formatting. Sin embargo, le aconsejo que no lo haga. Si alguien realmente quiere aislar cada cadena de su código fuente comstackdo, esto es posible para él (a less que realmente haga cosas exigentes).

La mayoría de los usuarios simplemente no se preocupan por lo que está dentro del file ipa. Si puedes vivir con <1% que lo inspecciona, no te preocupes demasiado por este tema.

Otro aspecto también sería posible (incluso si no es una idea fantástica): Podría apuntar su UIWebView a un website secreto solo usted y su aplicación lo saben. Esto no es recomendable .