博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】iOS程序自动检测更新的实现 -- 思路不错
阅读量:6942 次
发布时间:2019-06-27

本文共 1681 字,大约阅读时间需要 5 分钟。

原文网址:http://blog.csdn.net/davidsph/article/details/8931718

之前项目需要用到app自动更新的功能,现将实现方案分享出来。

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"];
            
            CCLog(@"appStore 版本号为:%@ 本地版本号为:%@",newVersion,localVersion);
以下便是比较,这两个版本号是否一致来决定是否更新,简单,故略之。有需要的可以留言联系。

你可能感兴趣的文章
网易七鱼 Android 高性能日志写入方案
查看>>
微软Visual Studio 2010架构设计功能应用(转)
查看>>
干净的代码是改出来的
查看>>
微软面试题附答案(转)
查看>>
你必须要知道的架构知识~第三章 接口用来制定操作的统一性
查看>>
关于下拉菜单和iframe的问题
查看>>
ASP.NET File.Delete只读文件引起的访问被拒绝,设置文件属性为Normal
查看>>
Sharepoint学习笔记—ECMAScript对象模型系列-- 11、 Enable/Disable Ribbon上的Button
查看>>
python类库26[sqlite]
查看>>
苹果与三星的专利纠纷
查看>>
boost库在工作(36)网络服务端之六
查看>>
关于java.lang.IllegalArgumentException: View not attached to window manager 错误的分析
查看>>
CSS——float属性备忘笔记
查看>>
利用pushState开发无刷页面切换(转)
查看>>
(翻译)理解Java当中的回调机制
查看>>
Discuz! X 插件开发手册
查看>>
Spring 注解@Component,@Service,@Controller,@Repository
查看>>
让PHP7达到最高性能的几个Tips(转)
查看>>
朗文在线词典的使用
查看>>
7-9-有向无环图拓扑排序-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>