博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 检查更新 详解
阅读量:2393 次
发布时间:2019-05-10

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

1、从苹果服务器上查询已发布的最新应用版本号
请求的URL地址 : http://itunes.apple.com/lookup?id=你的应用程序的ID
返回的数据为json格式,包括开发者ID、开发者名称、应用ID、应用名称、版本号等
获取其中的版本号 :
NSArray *array = responseObject[@"results"];
NSDictionary *dict = [array lastObject];
NSString *serverVersion = dict[@"version"];
2> 获取当前应用的版本号
NSString *curVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
3> 比较两者,如果服务器上的版本号 > 当前应用版本号,则提示用户
/**
 * check new version
 */
- (
void)checkNewVersionApp
{
   
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
    manager.
responseSerializer = [AFJSONResponseSerializer serializer];
    manager.
responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"text/plain", @"text/javascript", @"text/json", nil];;
    manager.
requestSerializer.timeoutInterval = 5.f;
    [manager
POST:@""
      
parameters:nil
         
success:^(NSURLSessionDataTask *task, id responseObject)
     {
        
BOOL hasNewVersion = false;
        
NSString *curVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
        
NSArray *curVersionArr = [curVersion componentsSeparatedByString:@"."];
        
NSArray *array = responseObject[@"results"];
        
NSDictionary *dict = [array lastObject];
        
serverVersion = dict[@"version"];
        
        
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        
NSString *ignoreAppVersion = [userDefaults objectForKey:@"ignoreAppVersion"];
        
if([serverVersion isEqualToString:ignoreAppVersion])
         {
            
return;
         }
        
NSArray *serverVersionArr = [serverVersion componentsSeparatedByString:@"."];
        
if (curVersionArr.count > serverVersionArr.count)
         {
            
// 1.2.1   1.3
            
for (int i = 0; i < serverVersionArr.count; i++)
             {
                
int oldVersion = [curVersionArr[i] intValue];
                
int newVersion = [serverVersionArr[i] intValue];
                
if (oldVersion < newVersion)
                 {
                     hasNewVersion =
true;
                    
break;
                 }
                 else if (oldVersion > newVersion)
                 {
                     break;
                 }
             }
         }
        
else
if
(curVersionArr.
count
< serverVersionArr.
count
)
         {
            
// 1.2   1.3.1
            
for
(
int
i =
0
; i < curVersionArr.
count
; i++)
             {
                
int
oldVersion = [curVersionArr[i]
intValue
];
                
int
newVersion = [serverVersionArr[i]
intValue
];
                
if
(oldVersion < newVersion)
                 {
                     hasNewVersion =
true
;
                    
break
;
                 }
                 else if (oldVersion > newVersion)
                 {
                     break;
                 }
             }
         }
        
else
         {
            
// 1.2   1.3
            
for
(
int
i =
0
; i < curVersionArr.
count
; i++)
             {
                
int
oldVersion = [curVersionArr[i]
intValue
];
                
int
newVersion = [serverVersionArr[i]
intValue
];
                
if
(oldVersion < newVersion)
                 {
                     hasNewVersion =
true
;
                    
break
;
                 }
                 else if (oldVersion > newVersion)
                 {
                     break;
                 }
             }
         }
        
if
(hasNewVersion)
         {
            
//
存在新版本,提示用户更新
            
UIAlertView
*alert = [[
UIAlertView
alloc
]
initWithTitle
:
@"
发现新版本
"
message
:[
NSString
stringWithFormat
:
@"
电梯保
v%@
,赶快去体验吧
"
,
serverVersion
]
delegate
:
self
cancelButtonTitle
:
@"
暂不更新
"
otherButtonTitles
:
@"
跳过此版本
"
,
@"
更新
"
,
nil
];
             [alert
show
];
         }
     }
         
failure
:^(
NSURLSessionDataTask
*task,
NSError
*error)
     {
        
NSLog
(
@"%@"
, error);
     }];
}
#pragma mark - UIAlertViewDelegate
- (
void
)alertView:(
UIAlertView
*)alertView clickedButtonAtIndex:(
NSInteger
)buttonIndex
{
   
switch
(buttonIndex)
    {
       
case
0
:
           
break
;
       
case
1
:
            [[
NSUserDefaults
standardUserDefaults
]
setObject
:
serverVersion
forKey
:
@"ignoreAppVersion"
];
           
break
;
       
case
2
:
            [[
UIApplication
sharedApplication
]
openURL
:[
NSURL
URLWithString
:
@""
]];
           
break
;
    }
}
你可能感兴趣的文章
CentOS 下安装 svn
查看>>
RHEL 5.4 下安装和使用 ntop 全纪录(ntop:Linux下可通过Web访问的网络流量监控工具)...
查看>>
Linux下更改MySQL的数据库目录
查看>>
Bash修改命令提示符
查看>>
MySQL无法启动
查看>>
有关MySQL同步复制的精彩文章推荐
查看>>
远程桌面连通器(RemoteDesktopConnex) 1.0.2 发布了!
查看>>
在Linux下比较两个目录需要忽略某些文件时怎么做?
查看>>
在Bash脚本中怎么关闭文件描述符?
查看>>
在Linux用tar归档压缩文件时忽略某些文件和目录
查看>>
Linux下怎样查找包含**的文件
查看>>
Java并发的实现和应用
查看>>
Netty的基础架构模型
查看>>
从NoSuchMethodError看jvm编译和class加载方式
查看>>
如果 TCP 协议中三次握手不携带序列号,会造成什么样的后果
查看>>
正确理解Spring事务和数据库事务和锁
查看>>
Java并发知识点汇总
查看>>
sping代码优化建议
查看>>
Java wait()和await() notify()和signal() notifyAll()和signalAll()了解和区别
查看>>
mysql 建表设计建议
查看>>