APPバージョンの更新判定小記

2065 ワード

昨夜家でAPPを出した時、小さいバグに出会いました.ここで記録してください.
シーン復元:昨夜家でappの新しいバージョンを更新しました.2.10で運行している時に、新しいバージョンがダウンロードできるようにヒントを与えました.release noteを見たら、このrelease noteは2.0.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のCFBundleShot VerssionStringと比較して、現在のinfo.plistのバージョンが低い場合はユーザーに更新を警告します.
エラーの原因:エラーの原因も簡単です.ここで二つの文字列を比較すると問題があります.「2.2.9」が「2.10」より大きいので、比較関数を再処理すればいいです.