• 版本更新实现的思路

  • 获取自身的版本号
  • 获取AppStore的版本号
  • 自身的版本号和AppStore的比较
  • 弹窗提示所需数据的获取的方式
  • 1.获取自身的版本号
  • 2.AppStore的版本号

    WechatIMG58.jpeg

    具体实现的代码

    • 网络请求app的信息

      -(void)VersonUpdate{
      //定义的app的地址
      NSString *urld = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",@"你的APPID"]; //网络请求app的信息,主要是取得我说需要的Version
      NSURL *url = [NSURL URLWithString:urld];
      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
      cachePolicy:NSURLRequestReloadIgnoringCacheData
      timeoutInterval:10];
      [request setHTTPMethod:@"POST"]; NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
      NSMutableDictionary *receiveStatusDic=[[NSMutableDictionary alloc]init];
      if (data) { //data是有关于App所有的信息
      NSDictionary *receiveDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
      if ([[receiveDic valueForKey:@"resultCount"] intValue]>0) { [receiveStatusDic setValue:@"1" forKey:@"status"];
      [receiveStatusDic setValue:[[[receiveDic valueForKey:@"results"] objectAtIndex:0] valueForKey:@"version"] forKey:@"version"]; //请求的有数据,进行版本比较
      [self performSelectorOnMainThread:@selector(receiveData:) withObject:receiveStatusDic waitUntilDone:NO];
      }else{ [receiveStatusDic setValue:@"-1" forKey:@"status"];
      }
      }else{
      [receiveStatusDic setValue:@"-1" forKey:@"status"];
      }
      }]; [task resume];
      }
    • 获取自身的版本号并与AppStore比较
    -(void)receiveData:(id)sender
    {
    //获取APP自身版本号
    NSString *localVersion = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"]; NSArray *localArray = [localVersion componentsSeparatedByString:@"."];
    NSArray *versionArray = [sender[@"version"] componentsSeparatedByString:@"."]; if ((versionArray.count == 3) && (localArray.count == versionArray.count)) { if ([localArray[0] intValue] < [versionArray[0] intValue]) {
    [self updateVersion];
    }else if ([localArray[0] intValue] == [versionArray[0] intValue]){
    if ([localArray[1] intValue] < [versionArray[1] intValue]) {
    [self updateVersion];
    }else if ([localArray[1] intValue] == [versionArray[1] intValue]){
    if ([localArray[2] intValue] < [versionArray[2] intValue]) {
    [self updateVersion];
    }
    }
    }
    }
    }
    • 根据比较的结果,实现弹窗
    -(void)updateVersion{
    NSString *msg = [NSString stringWithFormat:@"更新最新版本,优惠信息提前知"];
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"升级提示" message:msg preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"现在升级"style:UIAlertActionStyleDestructive handler:^(UIAlertAction*action) { NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"你的app在商店的下载地址"]];
    [[UIApplication sharedApplication]openURL:url];
    }];
    [alertController addAction:otherAction];
    [self.window.rootViewController presentViewController:alertController animated:YES completion:nil]; }

    温馨提示

    • 我这种实现的方式是根据自身的版本和线上版本,比较大小来实现的弹窗,如果比线上的版本小,就会弹窗,具体的比较看上面的代码。这样上线可以瞒天过海。
    • 当你想实现提醒更新的时候,直接的把我上面的代码,copy到AppDelegate里面即可,当然还要换上你自己的appid,具体的获取方式,上面已经写明。
    • 如果想模拟器测试效果,只要把version改的比线上的版本小就可以。
    • 我的弹窗比较“简陋”,具体的好看的效果,还需要自己去改变了。

     

小知识点-ios跳过app store更新版本的更多相关文章

  1. iOS 7 新版微信 URL 不支持跳转 App Store 的解决方案

    今天早上刚到公司,就收到反馈说公司前端页面的下载按钮在 iOS 7 的微信内置浏览器里面点击无效,经过确认之后,前端代码是正常的,问题出在了微信上,然后谷歌之,原来腾讯在***. 是 BUG 还是刻意 ...

  2. 使用Mac App Store更新、下载软件时出现未知错误的解决方法

    很多果迷在使用 Mac App Store 更新/下载软件时,可能都曾被”未知错误”困扰过,怎么解决也不行.然而,过一段时间不知道做了什么又自己好了.今天我们提供两个解决这个问题的方法,下次遇到这个问 ...

  3. 根据appid跳到App Store某个APP的详情页

    需求 本手机是否装了某个APP 示例百度appid 382201985  scheme BaiduSSO:// 1.是,直接打开百度APP 2.否,跳到App Store百度APP的详情页 NSStr ...

  4. IOS开始对App Store大扫除:你的APP更新了吗?

    成都亿合科技小编从北京商报了解到,对于开发APP应用的要注意啦,IOS要开始对App Store大扫除:你的APP更新了吗? 日前苹果App Store的开发者们发送邮件,表示将实施一个持续评估应用行 ...

  5. (C#)Xamarin.ios 发布到 App Store

    项目做到尾声了,IOS要发布,程序猿力Max来了. 不过就公司开发者账号就弄了一个月多,期间因为申请过D-U-N-S客服联系要公司资料时我们中途说取消了,后来再申请不知多少次了都没再回复... 给美国 ...

  6. 点击页面判断是否安装app并打开,否则跳转app store的方法

    常常有这样的场景,咱们开发出来的APP需要进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码.但往往我们都是直接给推广图片加了一个下载链接(App Store中的).所以咱们来模拟一下用 ...

  7. IOS 上架到App Store被拒的常见问题总结

    Guideline 2.3.3 - Performance - Accurate Metadata 2017年11月16日 上午12:52 发件人 Apple 2. 3 Performance: Ac ...

  8. iOS 上传App Store提示WARNING ITMS-90703错误的说明

    今天上传app到appstore的时候,上传到最后一步的时候,报了一个警告: 原文如下: WARNING ITMS-90703: "Deprecated Xcode Build. Due t ...

  9. iOS技术框架构和更新版本的技术特性

    Core OS层 Sytem 系统层包括内核环境,驱动及操作系统层unix接口.内核以mach为基础,它 负责操作系统的各个方面,包括管理系统的虚拟内存,线程,文件系统,网络以及进程间通讯.这一层包含 ...

随机推荐

  1. javaScript 设计模式系列之三:代理模式

    介绍 代理模式为其他对象提供一种代理以控制对这个对象的访问. 根据代理模式的使用目的不同,代理模式又可以分为多种类型: 远程代理(Remote Proxy) 虚拟代理(Virtual Proxy)如需 ...

  2. hdu1695 GCD(莫比乌斯入门题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意: 给出n.m.k ,求出1<=x<=n, 1<=y<=m 且gcd ...

  3. C# 反射、与dynamic最佳组合

    在 C# 中反射技术应用广泛,至于什么是反射.........你如果不了解的话,请看下段说明,否则请跳过下段.广告一下:希望我文章的朋友请关注一下我的blog,这也有助于提高本人写作的动力. 反射:当 ...

  4. Myeclipse去掉恶心的弹框

    错误提示: 解决方法: 把JavaScript Validator去掉.去掉的方法是:选择一个项目—-右键Properties—-Builders(排第二)—-点一下右侧会有四项—-取消第一项“Jav ...

  5. JSON、数组、时间戳

    // on removeClass addClass slice $('.pic-subgroup').on('click',function(){ $('.pic_div.active').remo ...

  6. wait与sellp方法区别

    Java Thread(线程)案例详解sleep和wait的区别    上次对Java Thread有了总体的概述与总结,当然大多都是理论上的,这次我将详解Thread中两个常用且容易疑惑的方法.并通 ...

  7. [转载]python 详解re模块

    原文地址:python 详解re模块作者:Rocky 正则表达式的元字符有. ^ $ * ? { [ ] | ( ) .表示任意字符 []用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字 ...

  8. JS学习三(函数)

    [函数的声明格式] 1.函数的声明格式: function 函数名(参数1,参数2,...){ 函数体代码 return 返回值: } 函数的调用: ① 直接调用:函数名(参数1的值,参数2的值,.. ...

  9. CSS基础知识摘要

    元素分类 块级元素 什么是块级元素?在html中<div>. <p>.<h1>.<form>.<table>.<ul> 和 &l ...

  10. Swing-布局管理器之FlowLayout(流式布局)-入门

    FlowLayout应该是Swing布局管理器学习中最简单.最基础的一个.所谓流式,就是内部控件像水流一样,从前到后按顺序水平排列,直到达到容器的宽度时跳转到第二行.既然是水平排列,那么就存在三种基本 ...