版本更新检查

#pragma mark - 保存应用在AppStore上的版本号到本地
+ (void)saveAppStoreVersionToUserDefaults {
    NSString *storeVersion = [kUserDefaults stringForKey:kAppStoreVersionKey];
    NSString *bundleVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

    // 应用当前的version,应该小于等于store上的version。如果不是,则说明应用升级后,UserDefault中保存的store version未更新,需重新设。
    if(nil == storeVersion || [self version:bundleVersion isBiggerThan:storeVersion]) {
        storeVersion = [HYBNetworkEngine obtainLatestAppVersion]; // 获取最新的版本
        if (storeVersion) {
            [kUserDefaults setObject:storeVersion forKey:kAppStoreVersionKey];
        }
    }
    return;
}

#pragma mark - 是否需要更新应用
+ (BOOL)isAppNeedToUpdate:(BOOL)needNetwork {
    NSString *version = nil;
    if (needNetwork) { // 获取应用在appStore上的版本
        version = [HYBNetworkEngine obtainLatestAppVersion];
        if (version) { // 保存到本地
            [kUserDefaults setObject:version forKey:kAppStoreVersionKey];
        }
    } else { // 直接从本地获取
        version = [kUserDefaults stringForKey:kAppStoreVersionKey];
    }

    if (!version) {
        return NO;
    }

    NSString *bundleVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    if ([self version:version isBiggerThan:bundleVersion]) {
        return YES;
    }
    return NO;
}

+ (BOOL)version:(NSString *)versionA isBiggerThan:(NSString *)versionB {
    NSArray *a = [versionA componentsSeparatedByString:@"."];
    NSArray *b = [versionB componentsSeparatedByString:@"."];

    unsigned aa = [[a objectAtIndex:0] intValue];
    unsigned ab = [a count] > 1 ? [[a objectAtIndex:1] intValue] : 0;
    unsigned cc = [a count] > 2 ? [[a objectAtIndex:2] intValue] : 0;

    unsigned ba = [[b objectAtIndex:0] intValue];
    unsigned bb = [b count] > 1 ? [[b objectAtIndex:1] intValue] : 0;
    unsigned bc = [b count] > 2 ? [[b objectAtIndex:2] intValue] : 0;

    return ((aa > ba) || (aa == ba && ab > bb) || (aa == ba && ab == bb && cc > bc));
}

#pragma mark - 进入AppStore应用
+ (void)goToAppStore {
#if TARGET_IPHONE_SIMULATOR
    NSLog(@"虚拟机不支持APP Store.打开iTunes不会有效果。");
#else
    NSString *iTunesLink = [NSString stringWithFormat:@"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=%@&mt=8", kAppIDInAppStore, nil];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
#endif
}
时间: 2024-10-28 21:30:29

版本更新检查的相关文章

安卓(Android)应用版本更新方法

开发中对版本进行检查并更新的需求基本是所有应用必须有的功能,可是在实际开发中有些朋友就容易忽略一些细节. 版本更新的基本流程: 一般是将本地版本告诉服务器,服务器经过相关处理会返回客户端相关信息,告诉客户端需不需要更新,如果需要更新是强制更新还是非强制更新.客户端得到服务器返回的相关信息后再进一步做逻辑处理. 强制更新: 一般的处理就是进入应用就弹窗通知用户有版本更新,弹窗可以没有取消按钮并不能取消.这样用户就只能选择更新或者关闭应用了,当然也可以添加取消按钮,但是如果用户选择取消则直接退出应用

纯HTML+CSS+JS编写的计算器应用

一道笔试题 之前偶然看到一个公司的笔试题,题目如下: 用HTML5.CSS3.JavaScript,做一个网页,实现如下图形式计算器 具体要求: 有且只有一个文件:index.html.不允许再有其他文件,不允许再有单独的CSS.JS.PNG.JPG文件. 运行环境为 Google Chrome. 必须支持标准的四则运算.例如:1+2*3=7. 请在收到邮件的48小时内独立完成本测试,并回复本邮件. 一道笔试题引发的一个练手项目 花了一点时间写好的第一版,符合了笔试题的要求.后来左看右看觉得还可

一起谈.NET技术,Silverlight实例教程 - Out of Browser在线更新和Silent安装

Silverlight 实例教程索引 Silverlight 实例教程 - Out of Browser开篇 Silverlight 实例教程 - Out of Browser配置,安装和卸载 Silverlight 实例教程 - Out of Browser的自定义应用 Silverlight 实例教程 - Out of Browser存取本地文件系统 Silverlight 实例教程 - Out of Browser与COM的交互基础 Silverlight 实例教程 - Out of Br

Silverlight实例教程 - Out of Browser在线更新和Silent安装

Silverlight 实例教程索引 Silverlight 实例教程 - Out of Browser开篇 Silverlight 实例教程 - Out of Browser配置,安装和卸载 Silverlight 实例教程 - Out of Browser的自定义应用 Silverlight 实例教程 - Out of Browser存取本地文件系统 Silverlight 实例教程 - Out of Browser与COM的交互基础 Silverlight 实例教程 - Out of Br

优酷PC客户端检查版本更新方法详解

给各位优酷软件的客户端用户们来详细的解析分享一下检查版本更新的方法. 方法分享: 客户端可以定期检查重要更新内容,并根据您的选择进行更新及安装,如下图所示:   另外点击"检查本地版本"可进行版本自检查及检查结果查看,也可去网站下载最新版本. 好了,以上的信息就是小编给各位优酷的这一款软件的客户端用户们带来的详细的检查版本更新的方法解析分享的全部内容了,各位看到这里的用户们小编相信大家现在那是非常的清楚方法了吧,那么大家就快去按照小编上面的方法自己去尝试着检查下版本更新吧.

Android 轻松实现后台搭建+APP版本更新

转自:http://blog.csdn.net/u012422829/article/details/46355515 看完本文,您可以学到: 1.版本更新的方法 2.与后台的交互 3.Android中Handler的使用 4.Android中ProgressDialog的使用 话不多说,先来看看效果图: 一.大致思路阐述 首先,我们要有一个可以被手机访问的后台. 这里有两种方法,在调试的时候我们可以利用手机和笔记本连到同一个局域网的方式,在电脑上开启个类似PHP或者JAVAEE一样样的后台服务

ASP+的Form中检查填写是否正确

asp+ 如今的商业网站,或者个人网站,多少都有客户调查啊,用户注册之类的东西,必然会用到表单,这些表单的填写正确与否,明显是由手写代码的方式来控制的.我承认编写代码,是一项有趣的工作,不过每次验证表单都来手写代码,我们希望提高我们的工作效率,并不是把我们很有限的时间花在表单的验证工作上. 基于另外的一些原因,Web应用程序很不好验证用户的输入,HTML 3.2 规范可以让你控制用户的反馈,但恶意的或者技术高超的用户可以绕过,因此即使有了浏览器端的手写代码,服务器端同样也需要验证,才能保证安全.

在ASP+的Form中检查填写是否正确

asp+ 如今的商业网站,或者个人网站,多少都有客户调查啊,用户注册之类的东西,必然会用到表单,这些表单的填写正确与否,明显是由手写代码的方式来控制的.我承认编写代码,是一项有趣的工作,不过每次验证表单都来手写代码,我们希望提高我们的工作效率,并不是把我们很有限的时间花在表单的验证工作上. 基于另外的一些原因,Web应用程序很不好验证用户的输入,HTML 3.2 规范可以让你控制用户的反馈,但恶意的或者技术高超的用户可以绕过,因此即使有了浏览器端的手写代码,服务器端同样也需要验证,才能保证安全.

基于Web的程序版本检查

现在的很多程序都可以通过 Internet 进行版本更新,Windows 操作系统本身的"Windows Update"就是一个典型的例子.要实现这种特性,首先必须对应用程序的版本进行检查.那么如何通过 Internet 对自己的程序进行版本检查呢?本文将通过实际的例子程序来示范实现细节. 在进入正题之前,我想先罗嗦几句,说说与此文内容有关的个人好恶:我很讨厌程序显示那些必须让用户干预的消息框,这种消息框很烦人,尤其是问你要不要更新的那种对话框.碰到这种情况我总是回答"No&