Pregunta

Lamento abrir una nueva pregunta, tuve que hacerlo, ya que escribí la otra pregunta desde mi iPhone como usuario no registrado y no es muy cómodo escribir desde el iPhone.

Reformulando la pregunta:

¿Es posible usar el:

  

[NSMutableArray writeToURL: (NSString *) ruta atómicamente: (BOOL) AuxSomething];

Para enviar un archivo XML (NSMutableArray) a una url y actualizar la url para que contenga ese archivo?

por ejemplo: Tengo una matriz y quiero subirla a una URL específica y la próxima vez que se inicie la aplicación quiero descargar esa matriz.

  

NSMutableArray * arrayToWrite = [[NSMutableArray alloc] initWithObjects: @ " One ", @ " Two ", nil];

     

[arrayToWrite writeToURL:

     

[NSURL urlWithString: @ " mywebsite.atwebpages.com/myArray.plist"] atómicamente: SÍ];

Y en tiempo de ejecución:

  

NSMutableArray * arrayToRead =

     

[[NSMutableArray alloc] initWithContentsOfURL: [NSURL urlWithString: @ " mywebsite.atwebpages.com/myArray.plist"]];

Es decir, quiero escribir un NSMutableArray en una URL, que se encuentra en un servicio de alojamiento web (por ejemplo, batcave.net), la URL recibe la información y actualiza los archivos del servidor en consecuencia. Una configuración de puntaje alto, el usuario envía sus puntajes, el servidor actualiza sus archivos, otros usuarios descargan los puntajes altos en tiempo de ejecución.

Espero que esto se aclare.

Editar: lo que estoy buscando es crear scripts PHP o ASP para que el sitio web, la URL a la que se envían los datos, sepa cómo manejarlos. Quiero un ejemplo o un tutorial sobre cómo implementar este script para manejar datos, si es posible hacerlo en un servicio de alojamiento web.

~ Gracias de antemano.

¿Fue útil?

Solución

Para responder a la pregunta "¿Cómo creo una puntuación alta como sistema?", hay varias partes del sistema:

  • Necesita una identificación para cada usuario (un GUID generado en el iPhone, junto con el nombre del usuario debería ser suficiente).
  • Necesita un servidor que: recuerde puntuaciones altas; recibe altas puntuaciones de los usuarios; muestra (en un sitio web) las puntuaciones más altas y / o hace que las puntuaciones más altas estén disponibles para descargar en el teléfono.
  • Necesitas un poco de protección contra el fraude, aunque eso probablemente sea una batalla perdida contra los jailbreakers.

En el lado de la aplicación de iPhone, es posible que desee descargar las puntuaciones más altas actuales para mostrar, lo que se hace fácilmente con algo como:

int statusCode = 0;
NSData* result = nil;
NSHTTPURLResponse* response = nil;
NSError* error = nil;
NSString* url = @"http://www.yourserver.com/highscores.php"; // returns XML plist data
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:180];
result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//  NSLog( @"NSURLConnection result %d %@ %@", [response statusCode], [request description], [error description] );
statusCode = [response statusCode];
if ( (statusCode == 0) || (!result && statusCode == 200) ) {
    statusCode = 500;
}

Dado que es sincrónico, es posible que desee ponerlo dentro de una operación NSO. Alternativamente, puede usar

+ (NSURLConnection *)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate

Para enviar datos de puntaje alto, porque es tan pequeño, la forma más fácil es simplemente codificarlo en la URL.

NSString* url = [NSString stringWithFormat:@"http://www.yourserver.com/sethighscores.php?uid=%@;name=%@;score=%d;antifraud=%@", [uid encodeParameter], [name encodeParameter], score, [secureHash encodeParameter]];

Donde encodeParameter es una categoría personalizada en NSString que codifica los parámetros de URL y secureHash es una cadena que representa un hashing seguro unidireccional del uid, nombre, puntaje y algún secreto conocido por su aplicación de iPhone y su sitio web. Tendrá que resolverlos por su cuenta o hacer preguntas por separado, ya que esto ya se está alargando.

Otros consejos

Según los documentos de NSData writeToURL (al menos para iPhone OS 2.2.1):

" Como actualmente solo se admiten las URL de file: //, no hay diferencia entre este método y writeToFile: atomically :, excepto el tipo del primer argumento. "

Aunque los documentos para NSArray / NSDictionary / NSString no mencionan específicamente la restricción, parece muy probable que se aplique la misma restricción.

Por lo tanto, deberá cargar el XML utilizando algún otro mecanismo.

Además, los sitios web generalmente son de solo lectura, a menos que proporcione un código específico en el servidor web para admitir la carga.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top