2011-01-12 2 views
10

Wenn das iOS SDK keine Funktionalität dafür hat, was ist dann, wenn ich eine einfache (statische) Website habe und irgendwo auf dieser Website manuell ein Stück Daten einstelle, das die neueste Version meiner App im App Store angibt jedes Mal, wenn ich ein Update veröffentliche? Wie kann ich meine App dazu bringen, die Website nach diesen Versionsdaten abzufragen und sie mit der auf dem iOS-Gerät ausgeführten Version zu vergleichen?Wie können Sie die aktuelle Version Ihrer App am einfachsten mit der neuesten Version im App Store vergleichen?

+0

Ich frage mich, warum Apple keinen Mechanismus bietet, um diese Informationen über, sagen wir, iTunes Framework oder etwas zu überprüfen. –

Antwort

12

Sie sind auf dem richtigen Weg. Sie müssen eine HTTP-Anfrage an Ihre statische Versionswebseite stellen. Um dies zu tun, können Sie ein Objekt NSURLConnection verwenden. So etwas wie:

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

Dann in Ihre Stellvertretung Umsetzung:

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

Also in Ihrem connectionDidFinishLoading Sie haben einen Blick auf mdata, die Sie gesammelt haben. Analysieren Sie die Versionsnummer aus und vergleichen es zu einem Bündel Versionsnummer:

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

sehr einfach, das sollte gut funktionieren, danke! – BeachRunnerFred

+0

@BeachRunnerJoe Keine Probleme. :) – RedBlueThing

+0

Das Problem ist, dass CFBundleVersion fälschlicherweise mit der Build-Nummer, nicht der Version gefüllt ist. Probieren Sie es in Xcode aus: Legen Sie eine Build-Nummer fest, die sich von Ihrer Anwendungsversion unterscheidet. Der obige Aufruf gibt die Build-Nummer zurück, weil Xcode das PLIST falsch auffüllt. Es fügt die Build-Nummer in die Bundle-Version ein. – Oscar

1

ich die gleiche Lösung @RedBlueThing in vielen meiner Apps empfohlen benutzt hatte. Ich habe es auf einen Service skaliert, den andere App-Entwickler unter CleverStork - ein Update Manager für Apps verwenden können. Hoffe, ihr mag es :)

Verwandte Themen