1、从苹果服务器上查询已发布的最新应用版本号
请求的URL地址 : http://itunes.apple.com/lookup?id=你的应用程序的ID
返回的数据为json格式,包括开发者ID、开发者名称、应用ID、应用名称、版本号等
获取其中的版本号 :
NSArray *array = responseObject[@"results"];
NSDictionary *dict = [array lastObject];
NSString *serverVersion = dict[@"version"];
2> 获取当前应用的版本号
NSString *curVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
3> 比较两者,如果服务器上的版本号 > 当前应用版本号,则提示用户
/**
* check new version
*/
- (void)checkNewVersionApp
{
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"text/plain", @"text/javascript", @"text/json", nil];;
manager.requestSerializer.timeoutInterval = 5.f;
[manager POST:@"http://itunes.apple.com/lookup?id=1166047939"
parameters:nil
success:^(NSURLSessionDataTask *task, id responseObject)
{
BOOL hasNewVersion = false;
NSString *curVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSArray *curVersionArr = [curVersion componentsSeparatedByString:@"."];
NSArray *array = responseObject[@"results"];
NSDictionary *dict = [array lastObject];
serverVersion = dict[@"version"];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *ignoreAppVersion = [userDefaults objectForKey:@"ignoreAppVersion"];
if([serverVersion isEqualToString:ignoreAppVersion])
{
return;
}
NSArray *serverVersionArr = [serverVersion componentsSeparatedByString:@"."];
if (curVersionArr.count > serverVersionArr.count)
{
// 1.2.1 1.3
for (int i = 0; i < serverVersionArr.count; i++)
{
int oldVersion = [curVersionArr[i] intValue];
int newVersion = [serverVersionArr[i] intValue];
if (oldVersion < newVersion)
{
hasNewVersion = true;
break;
}
* check new version
*/
- (void)checkNewVersionApp
{
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"text/plain", @"text/javascript", @"text/json", nil];;
manager.requestSerializer.timeoutInterval = 5.f;
[manager POST:@"http://itunes.apple.com/lookup?id=1166047939"
parameters:nil
success:^(NSURLSessionDataTask *task, id responseObject)
{
BOOL hasNewVersion = false;
NSString *curVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSArray *curVersionArr = [curVersion componentsSeparatedByString:@"."];
NSArray *array = responseObject[@"results"];
NSDictionary *dict = [array lastObject];
serverVersion = dict[@"version"];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *ignoreAppVersion = [userDefaults objectForKey:@"ignoreAppVersion"];
if([serverVersion isEqualToString:ignoreAppVersion])
{
return;
}
NSArray *serverVersionArr = [serverVersion componentsSeparatedByString:@"."];
if (curVersionArr.count > serverVersionArr.count)
{
// 1.2.1 1.3
for (int i = 0; i < serverVersionArr.count; i++)
{
int oldVersion = [curVersionArr[i] intValue];
int newVersion = [serverVersionArr[i] intValue];
if (oldVersion < newVersion)
{
hasNewVersion = true;
break;
}
else if (oldVersion > newVersion)
{
break;
}
}
}
else if (curVersionArr. count < serverVersionArr. count )
{
// 1.2 1.3.1
for ( int i = 0 ; i < curVersionArr. count ; i++)
{
int oldVersion = [curVersionArr[i] intValue ];
int newVersion = [serverVersionArr[i] intValue ];
if (oldVersion < newVersion)
{
hasNewVersion = true ;
break ;
}
{
break;
}
}
}
else if (curVersionArr. count < serverVersionArr. count )
{
// 1.2 1.3.1
for ( int i = 0 ; i < curVersionArr. count ; i++)
{
int oldVersion = [curVersionArr[i] intValue ];
int newVersion = [serverVersionArr[i] intValue ];
if (oldVersion < newVersion)
{
hasNewVersion = true ;
break ;
}
else if (oldVersion > newVersion)
{
break;
}
}
}
else
{
// 1.2 1.3
for ( int i = 0 ; i < curVersionArr. count ; i++)
{
int oldVersion = [curVersionArr[i] intValue ];
int newVersion = [serverVersionArr[i] intValue ];
if (oldVersion < newVersion)
{
hasNewVersion = true ;
break ;
}
{
break;
}
}
}
else
{
// 1.2 1.3
for ( int i = 0 ; i < curVersionArr. count ; i++)
{
int oldVersion = [curVersionArr[i] intValue ];
int newVersion = [serverVersionArr[i] intValue ];
if (oldVersion < newVersion)
{
hasNewVersion = true ;
break ;
}
else if (oldVersion > newVersion)
{
break;
}
}
}
if (hasNewVersion)
{
// 存在新版本,提示用户更新
UIAlertView *alert = [[ UIAlertView alloc ] initWithTitle : @" 发现新版本 " message :[ NSString stringWithFormat : @" 电梯保 v%@ ,赶快去体验吧 " , serverVersion ] delegate : self cancelButtonTitle : @" 暂不更新 " otherButtonTitles : @" 跳过此版本 " , @" 更新 " , nil ];
[alert show ];
}
}
failure :^( NSURLSessionDataTask *task, NSError *error)
{
NSLog ( @"%@" , error);
}];
}
#pragma mark - UIAlertViewDelegate
- ( void )alertView:( UIAlertView *)alertView clickedButtonAtIndex:( NSInteger )buttonIndex
{
switch (buttonIndex)
{
case 0 :
break ;
case 1 :
[[ NSUserDefaults standardUserDefaults ] setObject : serverVersion forKey : @"ignoreAppVersion" ];
break ;
case 2 :
[[ UIApplication sharedApplication ] openURL :[ NSURL URLWithString : @"https://itunes.apple.com/cn/app/dian-ti-bao/id1166047939?l=zh&ls=1&mt=8" ]];
break ;
}
}
{
break;
}
}
}
if (hasNewVersion)
{
// 存在新版本,提示用户更新
UIAlertView *alert = [[ UIAlertView alloc ] initWithTitle : @" 发现新版本 " message :[ NSString stringWithFormat : @" 电梯保 v%@ ,赶快去体验吧 " , serverVersion ] delegate : self cancelButtonTitle : @" 暂不更新 " otherButtonTitles : @" 跳过此版本 " , @" 更新 " , nil ];
[alert show ];
}
}
failure :^( NSURLSessionDataTask *task, NSError *error)
{
NSLog ( @"%@" , error);
}];
}
#pragma mark - UIAlertViewDelegate
- ( void )alertView:( UIAlertView *)alertView clickedButtonAtIndex:( NSInteger )buttonIndex
{
switch (buttonIndex)
{
case 0 :
break ;
case 1 :
[[ NSUserDefaults standardUserDefaults ] setObject : serverVersion forKey : @"ignoreAppVersion" ];
break ;
case 2 :
[[ UIApplication sharedApplication ] openURL :[ NSURL URLWithString : @"https://itunes.apple.com/cn/app/dian-ti-bao/id1166047939?l=zh&ls=1&mt=8" ]];
break ;
}
}