iOS开发之检查更新
#pragma mark - 检查更新
- (
void
)checkUpdateWithAPPID:(
NSString
*)APPID
{
//获取当前应用版本号
NSDictionary
*appInfo = [[
NSBundle
mainBundle] infoDictionary];
NSString
*currentVersion = [appInfo objectForKey:@
"CFBundleVersion"
];
NSString
*updateUrlString = [
NSString
stringWithFormat:@
"http://itunes.apple.com/lookup?id=%@"
,APPID];
NSURL
*updateUrl = [
NSURL
URLWithString:updateUrlString];
versionRequest = [ASIFormDataRequest requestWithURL:updateUrl];
[versionRequest setRequestMethod:@
"GET"
];
[versionRequest setTimeOutSeconds:60];
[versionRequest addRequestHeader:@
"Content-Type"
value:@
"application/json"
];
//loading view
CustomAlertView *checkingAlertView = [[CustomAlertView alloc] initWithFrame:NAVIGATION_FRAME style:CustomAlertViewStyleDefault noticeText:@
"正在检查更新..."
];
checkingAlertView.userInteractionEnabled =
YES
;
[
self
.navigationController.view addSubview:checkingAlertView];
[checkingAlertView release];
[versionRequest setCompletionBlock:^{
[checkingAlertView removeFromSuperview];
NSError
*error =
nil
;
NSDictionary
*dict = [
NSJSONSerialization
JSONObjectWithData:[versionRequest responseData] options:
NSJSONReadingMutableContainers
error:&error];
if
(!error) {
if
(dict !=
nil
) {
// DLog(@"dict %@",dict);
int
resultCount = [[dict objectForKey:@
"resultCount"
] integerValue];
if
(resultCount == 1) {
NSArray
*resultArray = [dict objectForKey:@
"results"
];
// DLog(@"version %@",[resultArray objectAtIndex:0]);
NSDictionary
*resultDict = [resultArray objectAtIndex:0];
// DLog(@"version is %@",[resultDict objectForKey:@"version"]);
NSString
*newVersion = [resultDict objectForKey:@
"version"
];
if
([newVersion doubleValue] > [currentVersion doubleValue]) {
NSString
*msg = [
NSString
stringWithFormat:@
"最新版本为%@,是否更新?"
,newVersion];
newVersionURlString = [[resultDict objectForKey:@
"trackViewUrl"
]
copy
];
DLog(@
"newVersionUrl is %@"
,newVersionURlString);
// if ([newVersionURlString hasPrefix:@"https"]) {
// [newVersionURlString replaceCharactersInRange:NSMakeRange(0, 5) withString:@"itms-apps"];
// }
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@
"提示"
message:msg delegate:
self
cancelButtonTitle:@
"暂不"
otherButtonTitles:@
"立即更新"
,
nil
];
alertView.tag = 1000;
[alertView show];
[alertView release];
}
else
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@
"提示"
message:@
"您使用的是最新版本!"
delegate:
self
cancelButtonTitle:
nil
otherButtonTitles:@
"确定"
,
nil
];
alertView.tag = 1001;
[alertView show];
[alertView release];
}
}
}
}
else
{
DLog(
"error is %@"
,[error debugDescription]);
}
}];
[versionRequest setFailedBlock:^{
[checkingAlertView removeFromSuperview];
CustomAlertView *alertView = [[CustomAlertView alloc] initWithFrame:NAVIGATION_FRAME style:CustomAlertViewStyleWarning noticeText:@
"操作失败,请稍候再试!"
];
[
self
.navigationController.view addSubview:alertView];
[alertView release];
[alertView selfRemoveFromSuperviewAfterSeconds:1.0];
}];
[versionRequest startSynchronous];
}
- (
void
)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(
NSInteger
)buttonIndex
{
DLog(@
"newVersionUrl is %@"
,newVersionURlString);
if
(buttonIndex) {
if
(alertView.tag == 1000) {
if
(newVersionURlString)
{
[[UIApplication sharedApplication] openURL:[
NSURL
URLWithString:newVersionURlString]];
}
}
}
}