iOS程序自动提示更新的实现方案大致分为两种:
第一种,自己服务器提供一个接口,告知相关app的当前版本,是否需要更新,以及更新的地址等信息 。
第二种,就是利用苹果的appstore 提供的相关api进行查询更新。
 
由于此前没有找到iOS程序更新的方法,就用了第一种方式,但后来发现了一些问题,自己提供服务器,需要维护,程序提交更新后,由于苹果需要审核,中间会有时间差,这个时间不好把握。后台就找苹果的相关文档,终于找到了。
http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html
 
实现机制:
 
#define APP_URL @"http://itunes.apple.com/lookup?id=你程序的appId"
 
  ASIFormDataRequest *formRequst = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:APP_URL]];

请求网络数据,返回的大致数据如下,其他还有好多数据,我们把关键的给截取出来

{  
    resultCount = 1;  
    results =     (  
                {  
            artistId = 开发者 ID;  
            artistName = 开发者名称;
            price = 0;
            isGameCenterEnabled = 0;  
            kind = software;  
            languageCodesISO2A =             (  
                EN  
            );
            trackCensoredName = 审查名称;  
            trackContentRating = 评级;  
            trackId = 应用程序 ID;  
            trackName = 应用程序名称";  
            trackViewUrl = 应用程序介绍网址;  
            userRatingCount = 用户评级;  
            userRatingCountForCurrentVersion = 1;  
            version = 版本号;  
            wrapperType = software;
      }  
    );  
}

取得这些数据后关键的信息就是“ version”最新版本号和“ trackViewUrl”程序地址。然后与本地程序的版本比较即可。

上面的build 对应info.plist文件里的“Bundle version”字段,供程序调试用,即内部调试版本号,不是显示在appstore上面的

version 对应info.plist文件里的“Bundle versions string,
short”字段,这才是真正的版本号,显示在appstore上的。由于之前学习的时候,上网查资料,有好多人老是把这两个给弄混了,我也纠结了一会,
特此说明一下,以备记忆。

//获取appstore最新的版本号
NSString *newVersion = [rightDic objectForKey:@"version"];
    
//获取应用程序的地址        
 NSString *newURL = [rightDic objectForKey:@"trackViewUrl"];
         
//取得本地程序的版本号    
NSDictionary *localDic =[[NSBundle mainBundle] infoDictionary];
             NSString *localVersion =[localDic objectForKey:@"CFBundleShortVersionString"];
            
            NSLog(@"appStore 版本号为:%@ 本地版本号为:%@",newVersion,localVersion);

以下便是比较,这两个版本号是否一致来决定是否更新,简单,故略之。有需要的可以留言联系。

iOS开发中检测版本,有新版本则更新的更多相关文章

  1. ios开发中各种版本、设备的区分

    设备类型的区分-iphone ,ipad-itouch..... 可以从 UIDevice 的属性 model 得到在现在执行的环境.例子如下: [cpp] view plaincopyprint? ...

  2. iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

                   在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...

  3. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  4. iOS开发中获取WiFi相关信息

    iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...

  5. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  6. GIT在iOS开发中的使用

    前言 在iOS开发中,很多公司对项目的版本控制管理都使用了git,当然也有部分公司使用的是svn.当年我最初接触的是svn,觉得使用起来挺方便的,但是每次切分支都需要下载一份新的代码起来,这实在太麻烦 ...

  7. IOS开发中UI编写方式——code vs. xib vs.StoryBoard

    最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关 ...

  8. iOS开发中调试小技巧

    对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...

  9. iOS开发中的4种数据持久化方式【一、属性列表与归档解档】

    iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中, ...

随机推荐

  1. python2 到 python3 转换工具 2to3

    windows系统下的使用方法: (1)将python安装包下的Tools/Scripts下面的2to3.py拷贝到需要转换文件目录中. (2)dos切换到需要转换的文件目录下,运行命令2to3.py ...

  2. pip 添加trusted host 一劳永逸

    继上一篇<Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED>出现的问题进行一个一劳永逸的操作 pip升级到7.0以后,在使用http ...

  3. 18.ssh远程双向无密码登陆

    #ssh远程双向无密码登陆 需求:在192.168.10.100执行ssh 192.168.20.205不需要输入密码直接跳转到205机器 #在192.168.10.100执行命令,我这里使用root ...

  4. 反编译CHM文件

    1.进入dos 2.输入 HH.EXE -decompile <输出路径> <目标chm文件> 例如:hh.exe -decompile d:\heihei D:\123.ch ...

  5. 解决T400\T500\W500等安装win10驱动后黑屏问题

    T400.W500.T500等机型有双显卡的机型,在安装WIn10后会在驱动后黑屏,但可见启动画面: 原因:没有对应的双显卡驱动程序,导致系统无法正确识别显卡: 解决方法:开机按F1进入Bios,在显 ...

  6. javascript事件代理(Event Delegation)

    看了几篇文章,放上来供参考 司徒正美的文章,Event Delegation Made Easy --------------------------------------------------- ...

  7. Go文件操作

    UNIX 的一个基础设计就是"万物皆文件"(everything is a file).我们不必知道一个文件到底映射成什么,操作系统的设备驱动抽象成文件.操作系统为设备提供了文件格 ...

  8. WPF:换肤

    看了一篇博客,觉得样式很好看,就自己动手做了一下,做个总结. 效果:    选择不同的图片背景就会改变: 直接上代码: 每个Theme对应一张图,除了图的名称不同之外,Theme?.xaml中的内容相 ...

  9. org.apache.commons.lang.StringUtils类

    org.apache.commons.lang.StringUtils类 本文摘自:(http://www.blogjava.net/japper/archive/2012/05/23/378946. ...

  10. 读《程序员的SQL金典》[3]--表连接、子查询

    一.表连接-JOIN 1. 自连接实例 查询类型相同的订单信息. SELECT O1 .*,O2.* FROM T_Order O1 JOIN T_Order O2 ON O1 .FTypeId= O ...