在開發中,我們可能會遇到這樣的需求,當AppStore中有新版本需要更新迭代,使用者在點開APP的時候彈出提示框提醒使用者去AppStore更新。 這裡需要我們判斷當前APP與AppStore中的版本差別,如果一樣,不需要提示;如果不一樣就彈出提示框,給使用者提示更新APP版本。
-(void)viewDidLoad{
[super viewDidLoad];
//iOS應用版本檢測
[self versionDetection];
}
-(void)versionDetection{
//獲取當前釋出的版本的Version
NSString *currentVersionStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://itunes.apple.com/cn/lookup?id=1061858098"] encoding:NSUTF8StringEncoding error:nil];
//判斷字串是否為nil,長度是不是大於0,以及是不是取得版本
if (currentVersionStr != nil && [currentVersionStr length] > 0 && [currentVersionStr rangeOfString:@"version"].length == 7) {
[self checkAppUpdate:currentVersionStr];
}
}
複製程式碼
程式碼中的url是每個APP的連結,其中id可以在下圖中查到,這個id是上線後自動分配的唯一id,這個id還有其他的檢視方式,這裡就不說了。由於公司app的銷售範圍是國內,所以連結是itunes.apple.com/cn/lookup?i…,如果銷售範圍不只國內連結需改成itunes.apple.com/lookup?id=1…,否則拿到的results會為空
-(void)checkAppUpdate:(NSString *)currentVersionStr{
//string轉dictionary
NSDictionary *versionDict = [global dictionaryWithJSonString:currentVersionStr];
//獲取當前版本
NSString *versionStr = [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"];
//線上App版本
NSString *appVersion = [currentVersionStr substringFromIndex:[currentVersionStr rangeOfString:@"\"version\":"].location+10];
appVersion = [[appVersion substringToIndex:[appVersion rangeOfString:@","].location] stringByReplacingOccurrencesOfString:@"\"" withString:@""];
NSArray *localArray = [versionStr componentsSeparatedByString:@"."];
NSArray *versionArray = [appVersion componentsSeparatedByString:@"."];
//這裡比較版本號不是不一樣就提示更新升級。而是當前版本號如果比AppStore版備號小的時候提示彈框升級。這樣做的最大好處就是蘋果在稽核App時不會出現提示升級。
if ((versionArray.count == 3) && (localArray.count == versionArray.count)) {
if ([localArray[0] intValue] < [versionArray[0] intValue]) {
[self uodateVersion:currentVersionStr];
}else if ([localArray[0] intValue] == [versionArray[0] intValue]){
if ([localArray[1] intValue] < [versionArray[1] intValue]) {
[self uodateVersion:currentVersionStr];
}else if ([localArray[1] intValue] == [versionArray[1] intValue]){
if ([localArray[2] intValue] < [versionArray[2] intValue]) {
[self uodateVersion:currentVersionStr];
}
}
}
}
-(void)uodateVersion:(NSString *)currentVersion {
NSDictionary *versionDict = [global dictionaryWithJSonString:currentVersion];
NSString * releaseNotesString= [[[versionDict objectForKey:@"results"] objectAtIndex:0] valueForKey:@"releaseNotes"];
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"發現新版本" message:releaseNotesString preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"更新" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSString *url = @"https://itunes.apple.com/cn/app/de-wei-dian-shang/id1061858098?mt=8&uo=4";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}];
[alertController addAction:cancelAction];
[alertController addAction:okAction];
[self presentViewController:alertController animated:YES completion:nil];
}
複製程式碼
糾正,現在這種方式會被蘋果給拒絕,可以換成後臺控制這個彈出框的顯示 結語:如有錯誤請留言! 如果疑問請留言,一起進步