在我的应用程序中,我检查AppStore上的版本,显示正确的更新消息。
问题是我在邮递员和app中调用的网址http://itunes.apple.com/lookup?bundleId=my_app_bundle
是这样的:
- (void)checkForNewVersion
{
appIsLastVersion = YES;
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
NSString *currentAppVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSString *appInfoUrl = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", bundleIdentifier];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:appInfoUrl]];
[request setHTTPMethod:@"GET"];
NSURLSession *sesion = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [sesion dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSError *e = nil;
NSData *jsonData = [output dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
NSArray *results = [jsonDict objectForKey:@"results"];
if (results.count > 0) {
NSString *version = [[[jsonDict objectForKey:@"results"] objectAtIndex:0] objectForKey:@"version"];
appIsLastVersion = [version isEqualToString:currentAppVersion];
[self.tableView reloadData];
}
}];
[task resume];
}
我在Postman上收到2个不同的回复:
"currentVersionReleaseDate": "2017-03-15T23:14:08Z"
"version": "2.0.1"
并在应用
上currentVersionReleaseDate = "2017-03-13T07:37:19Z"
version = "2.0.0"
任何解决方案?
答案 0 :(得分:2)
好的,所以主要原因是数据被缓存了所以我更改了NSURLSession
:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
NSURLSession *sesion = [NSURLSession sessionWithConfiguration:configuration];