zoukankan      html  css  js  c++  java
  • IOS判断app在appstore是否有可用的更新

    iTunes可以提供app的版本信息,主要通过appid获取,如 http://itunes.apple.com/lookup?id=946449501,使用时只需要到iTunes查找自己的appid,修改成自己的appid即可

    使用HTTP模式读取此链接可以获取app信息的json字符串

    贴出部分代码

    -(void)checkVersion
    {
        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:strURL]];//strURL为你的appid地址
        [request setRequestMethod:@"POST"];
        [request setDelegate:self];
        [request startAsynchronous];
    }
    
    -(void)requestFinished:(ASIHTTPRequest *)request
    {
        NSString *recStr = [[NSString alloc] initWithData:request.responseData encoding:NSUTF8StringEncoding];
        recStr = [recStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];//返回的字符串有前面有很多换行符,需要去除一下
        NSDictionary *resultDic = [JSONHelper DeserializerDictionary:recStr];//jsonhelper是我封装的json解析类,你可以使用自己方式解析
        
        NSArray *infoArray = [resultDic objectForKey:@"results"];
        if (infoArray.count > 0) {
            
            NSDictionary* releaseInfo =[infoArray objectAtIndex:0];
            NSString* appStoreVersion = [releaseInfo objectForKey:@"version"];
            NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
            NSString *currentVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];
            
            NSArray *curVerArr = [currentVersion componentsSeparatedByString:@"."];
            NSArray *appstoreVerArr = [appStoreVersion componentsSeparatedByString:@"."];
            BOOL needUpdate = NO;
            //比较版本号大小
            int maxv = (int)MAX(curVerArr.count, appstoreVerArr.count);
            int cver = 0;
            int aver = 0;
            for (int i = 0; i < maxv; i++) {
                if (appstoreVerArr.count > i) {
                    aver = [NSString stringWithFormat:@"%@",appstoreVerArr[i]].intValue;
                }
                else{
                    aver = 0;
                }
                if (curVerArr.count > i) {
                    cver = [NSString stringWithFormat:@"%@",curVerArr[i]].intValue;
                }
                else{
                    cver = 0;
                }
                if (aver > cver) {
                    needUpdate = YES;
                    break;
                }
            }
            
            //如果有可用的更新
            if (needUpdate){
                
                trackViewURL = [[NSString alloc] initWithString:[releaseInfo objectForKey:@"trackViewUrl"]];//trackViewURL临时变量存储app下载地址,可以让app跳转到appstore
                UIAlertView* alertview =[[UIAlertView alloc] initWithTitle:@"版本升级" message:[NSString stringWithFormat:@"发现有新版本,是否升级?"] delegate:self cancelButtonTitle:@"暂不升级" otherButtonTitles:@"马上升级", nil];
                [alertview show];
                
            }
            
        }
    }
    
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
        if (buttonIndex == 1){
            UIApplication *application = [UIApplication sharedApplication];
            [application openURL:[NSURL URLWithString:trackViewURL]];
        }
    }
  • 相关阅读:
    数据库连接(1)-从JDBC到MyBatis
    基于 abp vNext 和 .NET Core 开发博客项目
    基于 abp vNext 和 .NET Core 开发博客项目
    正则表达式位置匹配
    正则表达式字符匹配
    2019年终总结
    Win10 1903 运行安卓模拟器蓝屏解决方案
    我已经看到了,撤回也没用了(PC微信防撤回补丁)
    DOCKER 学习笔记1 认识docker
    Java 中级 学习笔记 2 JVM GC 垃圾回收与算法
  • 原文地址:https://www.cnblogs.com/Longkin/p/4159175.html
Copyright © 2011-2022 走看看