APP版本更新判断小记

昨晚在家发版APP的时候遇到了一个小bug,在这里记录一下。

场景还原:
昨晚在家更新了app新的版本: 2.1.10,然后运行的时候居然提示了有新的版本可供下载,看了一眼release note,发现这个release note是2.1.9版本的。代码如下:

NSString *url = S(@"http://itunes.apple.com/cn/lookup?id=%@", kAppstoreID);
        
[sessionManager GET:url parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
    NSError *error;
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:&error];
    if (json) {
        NSArray *array = [json objectForKey:@"results"];
        if (array.count > 0) {
            NSDictionary *dict = [array objectAtIndex :0];
            NSString *itunesVersion = [array objectAtIndexSafely:0][@"version"];
            NSString *strVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
            CGFloat version = [block_self floatValueFromItunesAppVersionString:strVersion];
                    
            if ([block_self floatValueFromItunesAppVersionString:itunesVersion] > version){
                block_self.appstoreUrl = [array objectAtIndexSafely:0][@"trackViewUrl"];
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"亲,又有新版本了,去看看吧"
                                                                message:dict[@"releaseNotes"]
                                                               delegate:block_self
                                                      cancelButtonTitle:@"立刻升级"
                                                      otherButtonTitles:@"取消", nil];
                [alert show];
            }
        }
    }
} failure:^(NSURLSessionDataTask *task, NSError *error) {
            
}];

这里的请求用的是itunes自带的请求,返回的信息中包括APP的基本信息,大小,分类,版本信息等,这里正是获得版本号,然后与本地info.plist中的CFBundleShortVersionString进行比较,如果当前info.plist中的版本较低则提醒用户更新。

错误原因:
错误原因也很简单,这里比较两个字符串方式存在问题,使得"2.1.9" 大于了 "2.1.10",因此重新处理一下比较函数即可。

你可能感兴趣的:(APP版本更新判断小记)