2011-01-12 13 views
10

Se l'SDK di iOS non dispone di funzionalità per questo, allora cosa succede se ho un sito web (statico) di base e da qualche parte su quel sito web ho impostato manualmente una parte di dati che specifica l'ultima versione della mia app nell'app store ogni volta che rilascio un aggiornamento? Come posso fare in modo che la mia app esegua la query sul sito Web per i dati di quella versione e ne controlli la versione in esecuzione sul dispositivo iOS?Qual è il modo più semplice per verificare la versione corrente della tua app rispetto alla versione più recente nell'app store?

+0

Mi chiedo perché Apple non fornisce un meccanismo per verificare tali informazioni tramite, ad esempio, quadro iTunes o qualcosa del genere. –

risposta

12

Sei sulla strada giusta. È necessario effettuare una richiesta HTTP alla pagina Web della versione statica. Per fare ciò è possibile utilizzare un oggetto NSURLConnection. Quindi, qualcosa di simile a:

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]; 

Poi nell'implementazione delegato:

(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 
} 

Quindi nel tuo connectionDidFinishLoading si dispone di uno sguardo al mData che avete raccolto. Analizzare fuori il numero di versione e confrontarlo con il vostro pacco numero di versione:

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

molto semplice, che dovrebbe funzionare benissimo, grazie! – BeachRunnerFred

+0

@BeachRunnerJoe Nessun problema. :) – RedBlueThing

+0

Il problema è che CFBundleVersion viene compilato erroneamente con il numero di build, non con la versione. Provalo in Xcode: imposta un numero di build diverso dalla versione dell'applicazione. La chiamata sopra restituirà il numero di build, perché Xcode popola il plist in modo errato. Mette il numero di build nella versione bundle. – Oscar

1

avevo usato la stessa soluzione @RedBlueThing consigliata in molte delle mie applicazioni. L'ho ridimensionato a un servizio che gli altri sviluppatori di app possono utilizzare a CleverStork - un gestore aggiornamenti per applicazioni. Spero che vi piaccia :)

Problemi correlati