2011-01-12 11 views
10

Si el iOS SDK no tiene funcionalidad para esto, ¿qué ocurre si tengo un sitio web básico (estático) y en algún lugar de ese sitio web establezco manualmente un dato que especifica la última versión de mi aplicación en la tienda de aplicaciones cada vez que lanzo una actualización? ¿Cómo puedo hacer que mi aplicación consulte el sitio web para esa versión de datos y compararla con la versión que se ejecuta en el dispositivo iOS?¿Cuál es la forma más sencilla de verificar la versión actual de su aplicación contra la última versión en la tienda de aplicaciones?

+0

Me pregunto por qué Apple no proporciona un mecanismo para verificar esa información a través de, por ejemplo, el marco de iTunes o algo así. –

Respuesta

12

Estás en el camino correcto. Debe realizar una solicitud HTTP a su página web de versión estática. Para hacer esto, puede usar un objeto NSURLConnection. Así que algo como:

NSURL * url = [NSURL URLWithString:@"http://yourweb.com/version.txt"]; 
NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60]; 
_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

Luego, en su aplicación delegado:

(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSHTTPURLResponse*)response 
{ 
    if(response.statusCode != 200) 
     // you got an error 
} 

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error 
{ 
    // again with the errors ... 
} 

// you got some data ... append it to your chunk 
// in your case all the data should come back in one callback 
- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data 
{ 
    [mData appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    // your request finished ... check the version here 
} 

Así que en su connectionDidFinishLoading que echar un vistazo a MDATA que ha recopilado. Analizar el número de versión y compararlo con el número de versión del paquete:

[self infoValueForKey:@"CFBundleVersion"]; 
+0

muy simple, eso debería funcionar muy bien, ¡gracias! – BeachRunnerFred

+0

@BeachRunnerJoe No hay problema. :) – RedBlueThing

+0

El problema es que CFBundleVersion se rellena erróneamente con el número de compilación, no con la versión. Pruébelo en Xcode: establezca un número de compilación que sea diferente de la versión de su aplicación. La llamada anterior devolverá el número de compilación, porque Xcode rellena el plist incorrectamente. Pone el número de compilación en la versión del paquete. – Oscar

1

que había utilizado el mismo @RedBlueThing solución recomendada en muchas de mis aplicaciones. Lo he escalado a un servicio que otros desarrolladores de aplicaciones pueden usar en CleverStork - un administrador de actualizaciones para aplicaciones. Espero que les guste :)

Cuestiones relacionadas