前言:检测更新是一个很常见的功能,相信每一个应用都会使用到,话不多说,直接贴码。
大致步骤如下:
1、通过http://itunes.apple.com/lookup?id=应用ID 来获取应用的相关信息;
2、与本地版本号进行比对;
3、如果需要更新,友好提示框;
4、如果需要更新,跳转到AppStore页面进行下载;
#pragma mark - 检测更新
- (void)checkSoftVersion
{
NSString *versionString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://itunes.apple.com/lookup?id=1146055295"] encoding:NSUTF8StringEncoding error:nil];
if (versionString != nil && [versionString length] > 0 && [versionString rangeOfString:@"version"].length == 7) {
[self checkAppUpdate:versionString];
}
}
#pragma mark 比较当前版本与新上线版本做比较
- (void)checkAppUpdate:(NSString *)appInfo
{
NSString *locationVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSString *appVersion = [appInfo substringFromIndex:[appInfo rangeOfString:@"\"version\":"].location + 10];
appVersion = [[appVersion substringToIndex:[appVersion rangeOfString:@","].location] stringByReplacingOccurrencesOfString:@"\"" withString:@""];
if ([appVersion compare:locationVersion] == NSOrderedDescending) {
dispatch_async(dispatch_get_main_queue(), ^{
[IWAlert doubleAlertWithTarget:_tabbarController title:@"已有更新版本" message:@"是否立即跳转到App Store下载 ?" confirmTitle:@"立刻更新" cancleTitle:@"稍后再说" success:^{
//跳转到AppStore页面
NSString *updUrl = @"https://itunes.apple.com/us/app/mei-shang-mei-ke/id1146055295?l=zh&ls=1&mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:updUrl]];
} failure:nil];
});
}
}
弹窗类的实现
#import <Foundation/Foundation.h>
typedef void(^IWAlertSuccessBlock)();
typedef void(^IWAlertFailureBlock)();
@interface IWAlert : NSObject
/**
弹窗 2个按钮
@param target 源
@param title 弹窗标题
@param message 弹窗信息
@param confirmTitle 确认按钮
@param cancleTitle 取消按钮
@param success 成功回调
@param failure 失败回调
*/
+ (void)doubleAlertWithTarget:(id)target title:(NSString *)title message:(NSString *)message confirmTitle:(NSString *)confirmTitle cancleTitle:(NSString *)cancleTitle success:(IWAlertSuccessBlock)success failure:(IWAlertFailureBlock)failure;
@end
#import "IWAlert.h"
@implementation IWAlert
+ (void)doubleAlertWithTarget:(id)target title:(NSString *)title message:(NSString *)message confirmTitle:(NSString *)confirmTitle cancleTitle:(NSString *)cancleTitle success:(IWAlertSuccessBlock)success failure:(IWAlertFailureBlock)failure
{
UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancle = [UIAlertAction actionWithTitle:cancleTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
if (failure == nil) return;
failure();
}];
[alert addAction:cancle];
UIAlertAction *confirm = [UIAlertAction actionWithTitle:confirmTitle style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
if (success == nil) return;
success();
}];
[alert addAction:confirm];
[target presentViewController:alert animated:YES completion:nil];
}
@end