持续创作,加快生长!这是我参与「日新计划 10 月更文应战」的第4天,点击查看活动概况
引言
- 版别晋级准则:
任何前进都比没有前进好
在谷歌内部,大部分产品的改善都是渐进的,即使是新产品,也难以第一次就很完美。许多时分,快到新版别上线的截止日期,总有单个项目不能如期交给相应的功用,缺了一些功用的新版别的确让人不舒服。这个时分怎么办呢?是否再等一两天?
谷歌的做法是不等,由于或许永久没有完美的时分。将一个比原来更好一点儿的版别准时供给给用户,总比为了寻求一个完美的版别,最终什么都供给不了好得多。
- 依据appid检测是否有新版别
原文:kunnan.blog.csdn.net/article/det…
I 版别晋级准则:任何前进都比没有前进好
1.1 谷歌的做法
在谷歌内部,大部分产品的改善都是渐进的,即使是新产品,也难以第一次就很完美。许多时分,快到新版别上线的截止日期,总有单个项目不能如期交给相应的功用,缺了一些功用的新版别的确让人不舒服。这个时分怎么办呢?是否再等一两天?
谷歌的做法是不等,由于或许永久没有完美的时分。将一个比原来更好一点儿的版别准时供给给用户,总比为了寻求一个完美的版别,最终什么都供给不了好得多。
1.2 美国在2016年末有过一次经过限枪法案的机会
美国国会两党都提出了禁枪或者限枪法案,当然内容有所差异。简单来说,民主党提出的法案支持严格禁枪,而共和党的法案期望有条件限枪,即在卖枪之前先做比较具体的背景调查,确保拥枪人员无犯罪记录。可是,在随后不久的表决中,两个法案都没有取得经过,于是限枪就胎死腹中。
2016年末,两党的计划其实有许多共同之处,甚至可以说,共和党的计划是民主党的计划的子集,至少两边都同意有不良记录的人不能具有枪支。如果能达到这样一个折中协议,总比没有成果好。可是两边都期望自己的诉求悉数得到满足,最终的成果却是什么诉求都满足不了。
最好是更好的敌人
由于想不出让所有人都满足的计划而难以推动作业。许多时分,一个完美的成果需要完成许多改善,而不会一步到位。
世界上许多工作,其实本身很难一步到位。许多时分,一些人无所作为不是由于不想干事,而是一根筋地寻求最好,最终什么也得不到。 (比方你一直想买大四房的房子,但最终往往仍是连小房子也没有)
II 依据appid检测是否有新版别
依照位数进行顺次比对,而不是去掉.分隔符再比较巨细
比方3.1.0 和3.0.16 如果是先去掉.分隔符再比较巨细,这样会导致误判,由于3016 比3.1.0更大。 除非提早规定约定好,版别号至少固定4位,或者五位。 即 3.1.00 和3.0.16 . 可是这样简单由于人的疏忽而导致判别失误
2.1 去掉.分隔符再比较巨细
- 依据appid检测是否有新版别
#pragma mark 查看版别 STOREAPPID
- (void)checkTheVersionWithappid:(NSString*)appid{
[QCTNetworkHelper getWithUrl:[NSString stringWithFormat:@"http://itunes.apple.com/cn/lookup?id=%@",appid] params:nil successBlock:^(NSDictionary *result) {
if ([[result objectForKey:@"results"] isKindOfClass:[NSArray class]]) {
NSArray *tempArr = [result objectForKey:@"results"];
if (tempArr.count) {
NSString *versionStr =[[tempArr objectAtIndex:0] valueForKey:@"version"];
NSString *appStoreVersion = [versionStr stringByReplacingOccurrencesOfString:@"." withString:@""] ;
if (appStoreVersion.length==2) {
appStoreVersion = [appStoreVersion stringByAppendingString:@"0"];
}else if (appStoreVersion.length==1){
appStoreVersion = [appStoreVersion stringByAppendingString:@"00"];
}
NSDictionary *infoDic=[[NSBundle mainBundle] infoDictionary];
NSString* currentVersion = [[infoDic valueForKey:@"CFBundleShortVersionString"] stringByReplacingOccurrencesOfString:@"." withString:@""];
currentVersion = [currentVersion stringByReplacingOccurrencesOfString:@"." withString:@""];
// 去除点
if (currentVersion.length==2) {
currentVersion = [currentVersion stringByAppendingString:@"0"];
}else if (currentVersion.length==1){
currentVersion = [currentVersion stringByAppendingString:@"00"];
}
// "Discover_a_new_version"= "发现新版别";
// "Whethertoupdate" = "是否更新";
// "Illtalkaboutitlater"= "稍后再说";
// "Update now" = "当即去更新";
// "Unupdate"= "撤销更新";
NSLog(@"currentVersion: %@",currentVersion);
// 2020-03-07 20:11:55.867708+0800 Housekeeper[2777:849229] currentVersion: 310
// 2020-03-07 20:11:55.868262+0800 Housekeeper[2777:849229] appStoreVersion: 3016
NSLog(@"appStoreVersion: %@",appStoreVersion);
if([self compareVesionWithServerVersion:versionStr]){// 选用新的判别方法: 依照位数进行顺次比对进行版别号巨细判别
//
// if([appStoreVersion floatValue] > [currentVersion floatValue]){// 废弃旧的判别方法:去掉.分隔符再比较巨细
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"%@%@",@"发现新版别",versionStr] message:@"是否更新?" preferredStyle:UIAlertControllerStyleAlert];
// "Illtalkaboutitlater"= "稍后再说";
// "Update now" = "当即去更新";
// "Unupdate"= "撤销更新";
[alertController addAction:[UIAlertAction actionWithTitle:@"稍后再说" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"撤销更新");
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"当即去更新" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",appid]];
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
}];
} else {
// Fallback on earlier vesions
[[UIApplication sharedApplication] openURL:url];
}
}]];
[[QCT_Common getCurrentVC] presentViewController:alertController animated:YES completion:nil];
}
}
}
} failureBlock:^(NSError *error) {
NSLog(@"查看版别错误: %@",error);
}];
}
2.2 依照位数进行顺次比对
-(BOOL)compareVesionWithServerVersion:(NSString *)version{
NSDictionary *infoDic=[[NSBundle mainBundle] infoDictionary];
// NSString* currentVersion = [[infoDic valueForKey:@"CFBundleShortVersionString"] stringByReplacingOccurrencesOfString:@"." withString:@""];
NSString* currentVersion = [infoDic valueForKey:@"CFBundleShortVersionString"];
NSArray *versionArray = [version componentsSeparatedByString:@"."];//服务器回来版
NSArray *currentVesionArray = [currentVersion componentsSeparatedByString:@"."];//当前版别
NSInteger a = (versionArray.count> currentVesionArray.count)?currentVesionArray.count : versionArray.count;
for (int i = 0; i< a; i++) {
NSInteger a = [[versionArray safeObjectAtIndex:i] integerValue];
NSInteger b = [[currentVesionArray safeObjectAtIndex:i] integerValue];
if (a > b) {
NSLog(@"有新版别");
return YES;
}else if(a < b){
return NO;
}
}
return NO;
}