开发者

What's the simplest way to check the current version of your app against the latest version in the app store?

开发者 https://www.devze.com 2023-02-03 18:19 出处:网络
If the iOS SDK doesn\'t have functionality for this, then what if I have a basic (static) website, and somewhere on that website I manually set a piece of data that specifies the latest version of my

If the iOS SDK doesn't have functionality for this, then what if I have a basic (static) website, and somewhere on that website I manually set a piece of data that specifies the latest version of my app in th开发者_运维问答e app store every time I release an update? How can I make my app query the website for that version data and check it against the version running on the iOS device?


You are on the right track. You need to make an HTTP request to your static version web page. To do this you can use an NSURLConnection object. So something like:

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

Then in your delegate implementation:

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

So in your connectionDidFinishLoading you have a look at mData that you have collected. Parse out the version number and compare it to your bundle version number:

[self infoValueForKey:@"CFBundleVersion"];


You can make a query like http://itunes.apple.com/en/lookup?bundleId=com.easi6.doorsndots to AppStore.

Returning JSON has an version information (currently on AppStore) which can be compared the other in bundle.


I had used the same solution @RedBlueThing recommended in many of my apps. I have scaled it to a service that other app developers can use at CleverStork - an Update Manager for Apps. Hope you guys like it :)

0

精彩评论

暂无评论...
验证码 换一张
取 消