获取两个version来判断是否版本更新

 获取当前版本号

NSDictionary *infoDic = [[NSBundle mainBundleinfoDictionary];

 //CFShow((__bridge CFTypeRef)(infoDic));

NSString *currentVersion = [infoDic objectForKey:@"CFBundleVersion"];

//获取AppStore中版本号

NSString *appStoreVersion = [[NSString alloc] init];

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

// id=414478124 是AppStore中应用的ID
    [manager POST:@"http://itunes.apple.com/lookup?id=414478124" parameters:nil success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {
        NSArray *array = responseObject[@"results"];
        NSDictionary *dict = [array lastObject];
        NSLog(@"当前版本为:%@", dict[@"version"]);
appStoreVersion = [dict objectForKey:@"version"];
    } failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
        [SVProgressHUD showErrorWithStatus:@"请求失败!" ];
    }];

        版本对比

        if (![appStoreVersion isEqualToString:currentVersion]) {

            //trackViewURL = [releaseInfo objectForKey:@"trackVireUrl"];

            UIAlertView *alert = [[UIAlertView allocinitWithTitle:@"更新" message:@"有新的版本更新,是否前往更新?"delegate:self cancelButtonTitle:@"关闭" otherButtonTitles:@"更新"nil];

            alert.tag = 10000;

            [alert show];

        }

        else

        {

            UIAlertView *alert = [[UIAlertView allocinitWithTitle:@"更新" message:@"此版本为最新版本" delegate:selfcancelButtonTitle:@"确定" otherButtonTitles:nilnil];

            alert.tag = 10001;

            [alert show];

        }

//alert 上button点击方法

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

    if (alertView.tag==10000) {

        if (buttonIndex==1) {

            NSURL *url = [NSURL URLWithString:@"https://itunes.apple.com"];

            [[UIApplication sharedApplication]openURL:url];

        }

}

}


从获得的 response 数据中解析需要的数据。因为从 appstore 查询得到的信息是 JSON 格式的,所以需要经过解析。解析之后得到的原始数据就是如下这个样子的:
{  
    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; 
      }  
    );  
}  

如果你拷贝 trackViewUrl 的实际地址,然后在浏览器中打开,就会打开你的应用程序在 appstore 中的介绍页面。当然我们也可以在代码中调用 safari 来打开它。
UIApplication *application = [UIApplication sharedApplication];  
[application openURL:[NSURL URLWithString:trackViewUrl]];  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在一个应用程序中同时加载两个版本的OJDBC驱动是比较困难的,因为Java类加载器默认使用委派模型,即当一个类需要被加载时,它首先会请求其父类加载器加载该类,如果父类加载器无法加载该类,则由当前类加载器尝试加载该类。 为了解决这个问题,我们可以使用自定义类加载器来加载不同版本的OJDBC驱动。自定义类加载器可以绕过默认的委派模型,从而使得我们可以在同一个应用程序中加载不同版本的类。 下面是一个简单的例子,演示如何使用自定义类加载器加载两个版本的OJDBC驱动: ```java import java.net.URL; import java.net.URLClassLoader; public class CustomClassLoader extends URLClassLoader { public CustomClassLoader(URL[] urls, ClassLoader parent) { super(urls, parent); } @Override public Class<?> loadClass(String name) throws ClassNotFoundException { if (name.startsWith("oracle.jdbc.")) { String version = System.getProperty("oracle.jdbc.version"); if (version != null && version.equals("11g")) { return loadClassFromVersion(name, "11g"); } else { return loadClassFromVersion(name, "12c"); } } return super.loadClass(name); } private Class<?> loadClassFromVersion(String name, String version) throws ClassNotFoundException { String className = name.replace(".", "/") + ".class"; URL url = getResource(className.replace(version, "common")); if (url == null) { throw new ClassNotFoundException(name); } byte[] bytes = null; try { bytes = IOUtils.toByteArray(url.openStream()); } catch (IOException e) { throw new ClassNotFoundException(name, e); } return defineClass(name, bytes, 0, bytes.length); } } ``` 在这个自定义类加载器中,我们重写了loadClass方法,并根据系统属性oracle.jdbc.version的值来判断应该加载哪个版本的OJDBC驱动。 如果oracle.jdbc.version的值为11g,则加载11g版本的驱动,否则加载12c版本的驱动。 在loadClass方法中,我们首先判断要加载的类是否以oracle.jdbc.开头,如果是,则调用loadClassFromVersion方法加载对应版本的类。 在loadClassFromVersion方法中,我们首先使用getResource方法获取该类对应的URL,然后读取该URL对应的字节码,并使用defineClass方法将该类加载到内存中。 最后,我们在应用程序中使用自定义类加载器来加载OJDBC驱动: ```java URL[] urls = new URL[] { new URL("file:///path/to/ojdbc11.jar"), new URL("file:///path/to/ojdbc12.jar") }; ClassLoader parent = ClassLoader.getSystemClassLoader(); CustomClassLoader loader = new CustomClassLoader(urls, parent); System.setProperty("oracle.jdbc.version", "11g"); // 设置oracle.jdbc.version属性为11g Class<?> driverClass = loader.loadClass("oracle.jdbc.driver.OracleDriver"); Driver driver = (Driver) driverClass.newInstance(); ``` 在这个例子中,我们首先创建一个CustomClassLoader对象,并将ojdbc11.jar和ojdbc12.jar的URL作为参数传入。 然后,我们设置oracle.jdbc.version属性为11g,并使用CustomClassLoader加载对应版本的OracleDriver类,并创建该类的实例。 这样,我们就可以在同一个应用程序中同时使用不同版本的OJDBC驱动了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值