iOS自定义版本更新检查

简介: 1、效果图提示新版本提示新版本(读取了AppStore写的更新方案)2、关键点请求http://itunes.apple.

1、效果图

img_cb8e791ae9f67ff8224ebf1b52b7066f.png
提示新版本
img_231e053a7695ee8336266fa91a279f43.png
提示新版本(读取了AppStore写的更新方案)

2、关键点

请求http://itunes.apple.com/lookup?id=968615456,就会返回关于这个应用的详细内容的JSON数据,后面就简单了吧

我的应用返回的JSON数据(已经格式化):

{
    "resultCount": 1,
    "results": [
        {
            "advisories": [
                "Unrestricted Web Access"
            ],
            "artistId": 914453386,
            "artistName": "he tiancong",
            "artistViewUrl": "https://itunes.apple.com/us/artist/he-tiancong/id914453386?uo=4",
            "artworkUrl100": "http://is5.mzstatic.com/image/pf/us/r30/Purple5/v4/6f/89/92/6f8992e4-5c10-be87-9242-d933ddb0780a/mzl.jxbacfmg.png",
            "artworkUrl512": "http://is5.mzstatic.com/image/pf/us/r30/Purple5/v4/6f/89/92/6f8992e4-5c10-be87-9242-d933ddb0780a/mzl.jxbacfmg.png",
            "artworkUrl60": "http://is3.mzstatic.com/image/pf/us/r30/Purple3/v4/2e/cc/a9/2ecca990-b82a-a238-793a-a16b59b56389/AppIcon60x60_U00402x.png",
            "bundleId": "CampusOfGLUT",
            "contentAdvisoryRating": "17+",
            "currency": "USD",
            "description": "桂林理工大学——校园通正式上线!

应用提供:
1、学校新闻、通知等动态;
2、学校学院、学习等、
3、学习 、生活等多栏目,分享和交流平台~

欢迎大家提供建议和评价!

邮件:ihetiancong@qq.com
QQ:3027201361",
            "features": [
                "iosUniversal"
            ],
            "fileSizeBytes": "6436734",
            "formattedPrice": "Free",
            "genreIds": [
                "6017",
                "6012"
            ],
            "genres": [
                "Education",
                "Lifestyle"
            ],
            "ipadScreenshotUrls": [
                "http://a1.mzstatic.com/us/r30/Purple3/v4/cf/36/c1/cf36c120-3798-303d-6ae6-cb70da8c7b18/screen480x480.jpeg",
                "http://a3.mzstatic.com/us/r30/Purple3/v4/4c/34/19/4c3419c4-c777-f202-0f5a-a1e733bf37a8/screen480x480.jpeg",
                "http://a2.mzstatic.com/us/r30/Purple5/v4/9e/9b/35/9e9b3592-4e93-148b-0fd8-73d8ed389388/screen480x480.jpeg"
            ],
            "isGameCenterEnabled": false,
            "kind": "software",
            "languageCodesISO2A": [
                "EN",
                "FR",
                "DE",
                "JA",
                "KO",
                "PL",
                "RU",
                "ZH",
                "ES",
                "ZH",
                "UK"
            ],
            "minimumOsVersion": "8.1",
            "price": 0.0,
            "primaryGenreId": 6017,
            "primaryGenreName": "Education",
            "releaseDate": "2015-03-18T09:34:28Z",
            "releaseNotes": "——————那些年,最后一次更新的版本——————

1、优化iPhone和iPad下显示效果
2、增加话题图标,内容更加醒目
3、增加一些可有可无的更新

——————那些年,我们一起说过的话题——————

1、非常感谢那些年i被拒绝的女孩,她们让我充实成长
2、非常感谢那些年i被关照的老师,他们让我无忧学习
3、非常感谢那些年i被信任的同学,他们让我珍惜想念
4、非常感谢那些年i被坚持的自己,你们让我相信自己

——————最后说明——————

1、应用为i毕业设计作品,不提供商业信息,感谢大家支持
2、应用中的学校新闻只提参考,由于解析原因,可能个别新闻无法显示,真实动态请浏览(www.glut.edu.cn)
3、校园话题的意义是希望能将学校的信息通过移动互联网重新整合在一起,这是一个信息未来的趋势
4、其它问题请联系:ihetiancong@qq.com

——————谢谢大家——————",
            "screenshotUrls": [
                "http://a2.mzstatic.com/us/r30/Purple1/v4/1f/bf/32/1fbf321a-c22b-f938-0d84-17e65730e7a9/screen1136x1136.jpeg",
                "http://a5.mzstatic.com/us/r30/Purple3/v4/c9/92/ec/c992ec71-7576-6334-3ebb-4aa857880219/screen1136x1136.jpeg",
                "http://a1.mzstatic.com/us/r30/Purple5/v4/72/27/ae/7227aed1-62fa-6946-e63e-52090ce6a021/screen1136x1136.jpeg",
                "http://a4.mzstatic.com/us/r30/Purple2/v4/13/46/d3/1346d396-4126-ab48-ae15-b0038b92bd68/screen1136x1136.jpeg"
            ],
            "sellerName": "he tiancong",
            "sellerUrl": "http://weibo.com/iHTCapp",
            "supportedDevices": [
                "iPhone5c",
                "iPhone6Plus",
                "iPodTouchFifthGen",
                "iPadThirdGen4G",
                "iPad2Wifi",
                "iPadFourthGen",
                "iPhone5s",
                "iPhone4S",
                "iPadThirdGen",
                "iPad23G",
                "iPhone6",
                "iPadFourthGen4G",
                "iPhone5",
                "iPadMini",
                "iPadMini4G"
            ],
            "trackCensoredName": "桂林理工大学---校园通",
            "trackContentRating": "17+",
            "trackId": 968615456,
            "trackName": "桂林理工大学---校园通",
            "trackViewUrl": "https://itunes.apple.com/us/app/gui-lin-li-gong-da-xue-xiao/id968615456?mt=8&uo=4",
            "version": "1.3",
            "wrapperType": "software"
        }
    ]
}

3、检查更新Demo

  • 检查更新
[AFNetworkingUtils getRequestWithUrl:@"http://itunes.apple.com/lookup?id=968615456" afterExecute:^(NSDictionary *resultDic) {
 
            float version =[[[[resultDic objectForKey:@"results"] objectAtIndex:0] valueForKey:@"version"] floatValue];
            NSDictionary *infoDic=[[NSBundle mainBundle] infoDictionary];
            float currentVersion = [[infoDic valueForKey:@"CFBundleShortVersionString"] floatValue];

            if(version>currentVersion){
                NSString *alertTitle=[@"桂林理工大学-校园通v" stringByAppendingString:[NSString stringWithFormat:@"%0.1f",version]];
                NSString *alertMsg=@"是否要更新?";
               //NSString *alertMsg  = [[[resultDic objectForKey:@"results"] objectAtIndex:0] valueForKey:@"releaseNotes"]
                UIAlertView *alertView=[[UIAlertView alloc] initWithTitle:alertTitle message:alertMsg delegate:self cancelButtonTitle:@"稍后更新" otherButtonTitles:@"立即更新", nil];
                [alertView show];
            }
    } onError:^{
    }];
  • 跳到AppStore更新
        NSString *url = @"https://itunes.apple.com/us/app/gui-lin-li-gong-da-xue-xiao/id968615456?mt=8&uo=4";
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

4、自定义成一个工具

  • 使用时调用这个方法就行
#pragma mark - 检查版本更新
-(void) checkUpdate{
    
    InformationHandleTool * tool = [InformationHandleTool sharedInfoTool];
    [tool checkUpdateWithAppID:@"968615456" success:^(NSDictionary *resultDic, BOOL isNewVersion, NSString *newVersion) {
        
        if (isNewVersion) {
            [self showUpdateView:newVersion];
        }
        
    } failure:^(NSError *error) {
        ;
    }];

}
  • 网络请求方法-(void)checkUpdateWithAppID:(NSString *)appID success:(void (^)(NSDictionary *resultDic , BOOL isNewVersion , NSString * newVersion))success failure:(void (^)(NSError *error))failure
#pragma mark - 检查版本更新
\- (void)checkUpdateWithAppID:(NSString *)appID success:(void (^)(NSDictionary *resultDic , BOOL isNewVersion , NSString * newVersion))success failure:(void (^)(NSError *error))failure
{
    AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
    manager.requestSerializer=[AFHTTPRequestSerializer serializer];
    manager.responseSerializer=[AFHTTPResponseSerializer serializer];
    NSString *encodingUrl=[[@"http://itunes.apple.com/lookup?id=" stringByAppendingString:appID] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    [manager GET:encodingUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *resultDic=[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
        
         NSString * versionStr =[[[resultDic objectForKey:@"results"] objectAtIndex:0] valueForKey:@"version"];
        
        float version =[versionStr floatValue];
        //self.iTunesLink=[[[resultDic objectForKey:@"results"] objectAtIndex:0] valueForKey:@"trackViewUrl"];
        NSDictionary *infoDic=[[NSBundle mainBundle] infoDictionary];
        float currentVersion = [[infoDic valueForKey:@"CFBundleShortVersionString"] floatValue];
        
        if(version>currentVersion){
            
            success(resultDic, YES, versionStr);
            
        }else{
            
            success(resultDic,NO ,versionStr);
            
        }
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        failure(error);
    }];
}
  • 提醒方法- (void)showUpdateView:(NSString *)newVersion
    ** 注:这个是iOS8以后的UIAlertController **
\- (void)showUpdateView:(NSString *)newVersion
{
    NSString *alertMsg=[[@"桂林理工大学-校园通v" stringByAppendingString:[NSString stringWithFormat:@"%0.1f",[newVersion floatValue]]] stringByAppendingString:@",赶快体验最新版本吧!"];
    
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"发现新版本" message:alertMsg preferredStyle:UIAlertControllerStyleAlert];
    
    // 添加按钮
    [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
        
    }]];
    
    [alert addAction:[UIAlertAction actionWithTitle:@"更新" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        
        NSString *str = @"https://itunes.apple.com/us/app/gui-lin-li-gong-da-xue-xiao/id968615456?mt=8&uo=4";
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
        
    }]];

    [self presentViewController:alert animated:YES completion:nil];
}

5、检查增强

  • 服务器版本跟本地版本可以随意,比如服务器1.4.1 ,本地1.4,也能检查了。

            NSString * serverVersion =[[[resultDic objectForKey:@"results"] objectAtIndex:0] valueForKey:@"version"];
            NSString * localVersion = [SystemUtils getVersionSting];
            
            //以"."分隔数字然后分配到不同数组
            NSArray * serverArray = [serverVersion componentsSeparatedByString:@"."];
            NSArray * localArray = [localVersion componentsSeparatedByString:@"."];
            
            for (int i = 0; i < serverArray.count; i++) {
                
                //以服务器版本为基准,判断本地版本位数小于服务器版本时,直接返回(并且判断为新版本,比如服务器1.5.1 本地为1.5)
                if(i > (localArray.count -1)){
                   //有新版本,提示!
                     break;
                }
                
                //有新版本,服务器版本对应数字大于本地
                if ( [serverArray[i] intValue] > [localArray[i] intValue]) {
                     //有新版本,提示!
                    break;
                }
            }
  • 如果有什么疑问,可以在评论区一起讨论;
  • 如果有什么不正确的地方,欢迎指导!


注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

目录
相关文章
|
7月前
|
iOS开发 UED
实现一个自定义的iOS动画效果
【4月更文挑战第9天】本文将详细介绍如何在iOS平台上实现一个自定义的动画效果。我们将通过使用Core Animation框架来实现这个动画效果,并展示如何在不同的场景中使用它。文章的目标是帮助读者理解如何使用Core Animation框架来创建自定义动画,并提供一个简单的示例代码。
56 1
|
1月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
55 1
|
2月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
55 5
|
2月前
|
Swift iOS开发 UED
实现一个自定义的iOS动画效果
本文介绍如何使用Swift和UIKit在iOS应用中实现一个自定义按钮动画,当按钮被点击时,其颜色从蓝色渐变为绿色,形状从圆形变为椭圆形,释放后恢复原状。通过UIView动画方法实现这一效果,代码示例展示了动画的平滑过渡和状态切换,有助于提升应用的视觉体验和用户交互。
52 1
|
3月前
|
Swift iOS开发 UED
揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【9月更文挑战第5天】本文通过具体案例介绍如何在iOS应用中使用Swift与UIKit实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
64 11
|
4月前
|
Swift iOS开发 UED
【绝妙创意】颠覆你的视觉体验!揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【8月更文挑战第13天】本文通过一个具体案例,介绍如何使用Swift与UIKit在iOS应用中创建独特的按钮动画效果。当按钮被按下时,其形状从圆形变化为椭圆形,颜色则从蓝色渐变为绿色;释放后,动画反向恢复原状。利用UIView动画方法及弹簧动画效果,实现了平滑自然的过渡。通过调整参数,开发者可以进一步优化动画体验,增强应用的互动性和视觉吸引力。
57 7
|
iOS开发
iOS多线程之NSOperationQueue-依赖、并发数、优先级、自定义Operation等最全的使用总结
iOS多线程之NSOperationQueue-依赖、并发数、优先级、自定义Operation等最全的使用总结
494 0
|
7月前
|
移动开发 开发工具 数据安全/隐私保护
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
|
API iOS开发
iOS 自定义转场动画 UIViewControllerTransitioning
iOS 自定义转场动画 UIViewControllerTransitioning
102 0
|
移动开发 开发工具 数据安全/隐私保护
iOS APP版本更新升级教程:如何打包上架新的APP版本?
本篇博客将介绍如何快速、简便地完成APP更新升级流程,让你的用户享受到更好的使用体验。使用常用开发工具打包,注意版本号的修改。进入APP页面点击“所有构建版本”选项,这里会显示上传成功的构建版本。输入更新说明,修改APP描述、关键词等,选择是否为新功能。如审核通过则恭喜你,否则根据反馈修改再重新上传提交审核。