昨晚在家發(fā)版APP的時候遇到了一個小bug胆描,在這里記錄一下布疙。
場景還原:
昨晚在家更新了app新的版本: 2.1.10冈绊,然后運(yùn)行的時候居然提示了有新的版本可供下載家淤,看了一眼release note匙睹,發(fā)現(xiàn)這個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進(jìn)行比較,如果當(dāng)前info.plist中的版本較低則提醒用戶更新浴讯。
錯誤原因:
錯誤原因也很簡單朵夏,這里比較兩個字符串方式存在問題,使得"2.1.9" 大于了 "2.1.10"榆纽,因此重新處理一下比較函數(shù)即可仰猖。