iOS版本更新判断

ios-版本检测更新.zip 1,一句代码,使用类方法,简单方便。 2,获取Appstore上关于应用的所用信息,以模型的形式保存,使用方便。 3,既有系统的Alert,也可自定义Alert。 立即下载
//
//  AppUpdate.h
//  iOSGeneral
//
//  Created by XX on 2018/4/23.
//  Copyright © 2018年 XX. All rights reserved.
//

#import <Foundation/Foundation.h>

#define myappid @""//这里写appid

typedef enum : NSUInteger {
    UpdateOptional,//可选
    UpdateForbidCancel,//不允许取消,强制更新
    UpdateNow,//立即去App Store更新
} UpdateFlag;

@interface AppUpdate : NSObject

- (void)versionUpdate:(UpdateFlag)flag;

@end
//
//  AppUpdate.m
//  iOSGeneral
//
//  Created by XX on 2018/4/23.
//  Copyright © 2018年 XX. All rights reserved.
//

#import "AppUpdate.h"
#import "AppUpdateViewController.h"
#import "LWAUodateViewController.h"

@interface AppUpdate()

@end

@implementation AppUpdate

- (void)versionUpdate:(UpdateFlag)flag {

    //定义的app的地址
    //country 上架国家(全部国家可不写) id appid。
    NSString *urld = [NSString stringWithFormat:@"https://itunes.apple.com/lookup?country=cn&id=%@", myappid];
    NSURL *url = [NSURL URLWithString:urld];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
    [request setHTTPMethod:@"GET"];
    
    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) {
            NSDictionary *receiveDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves|NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:nil];
            NSArray *array =receiveDic[@"results"];
            //获取appstore最新版本号
            NSString *version = [array[0] objectForKey:@"version"];
            NSString *note = [array[0] objectForKey:@"releaseNotes"];
         
            if ([version intValue]>0) {
                [receiveStatusDic setValue:@"1" forKey:@"status"];
                [receiveStatusDic setValue:version forKey:@"version"];
                [receiveStatusDic setValue:note forKey:@"note"];
                [receiveStatusDic setValue:@(flag) forKey:@"updateFlag"];
                //请求的有数据,进行版本比较
                [self performSelectorOnMainThread:@selector(receiveData:) withObject:receiveStatusDic waitUntilDone:NO];
            } else {
                [receiveStatusDic setValue:@"-1" forKey:@"status"];
            }
        } else {
            [receiveStatusDic setValue:@"-1" forKey:@"status"];
        }
    }];
    
    [task resume];
}

- (void)receiveData:(id)sender {
    //获取APP自身版本号
    NSString *localVersion = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"];
    
    NSArray *localArray = [localVersion componentsSeparatedByString:@"."];
    NSArray *versionArray = [sender[@"version"] componentsSeparatedByString:@"."];
    
    //比较
    NSUInteger count = versionArray.count;
    if (versionArray.count > localArray.count) {
        count = localArray.count;
    }
    for (int i = 0; i < count; i++) {
        if ([localArray[i] intValue] < [versionArray[i] intValue]) {
            [self alertUpdateVersion:sender];
            return;
        }
        //审核时本地大于线上,开发时也有可能
        if ([localArray[i] intValue] > [versionArray[i] intValue]) {
            NSLog(@"本地版本大于线上");
            return;
        }
    }
    //出现了1.2和1.2.3的情况,肯定是长的那个是高版本,因为不存在1.2和1.2.0对比的情况
    if (versionArray.count < localArray.count) {
        [self alertUpdateVersion:sender];
        return;
    }
    
    NSLog(@"目前没有新版本");
    if ([sender[@"updateFlag"] integerValue] == UpdateNow) {
        [DWBToast showCenterWithText:@"当前版本已是最新版本,无需更新"];
    }
}


- (void)alertUpdateVersion:(NSDictionary *)dic{
    [defaults setObject:@"update" forKey:@"update"];
    if ([dic[@"updateFlag"] integerValue] == UpdateForbidCancel) {
        [LWAUodateViewController AlertWithVersion:dic[@"version"] content:dic[@"note"] leftAction:^{
            [self goToUpdate];
        }];
    }else if ([dic[@"updateFlag"] integerValue] == UpdateOptional){
        [AppUpdateViewController AlertWithVersion:dic[@"version"] content:dic[@"note"] leftAction:^{
            [self goToUpdate];
        } rightAction:^{
            //取消事件
        }];
    } else if ([dic[@"updateFlag"] integerValue] == UpdateNow) {
        [self goToUpdate];
    }

//    NSString *msg = [NSString stringWithFormat:@"更新最新版本"];
//    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"升级提示" message:msg preferredStyle:UIAlertControllerStyleAlert];
//    UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"现在升级"style:UIAlertActionStyleDestructive handler:^(UIAlertAction*action) {
//        //跳转地址链接
//        NSString *str = [NSString stringWithFormat: @"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", myappid];
//        UIApplication *app = [UIApplication sharedApplication];
//        NSURL *url = [NSURL URLWithString:str];
//        if ([app canOpenURL:url])
//        {
//            [app openURL:url];
//            
//        }
//        
//    }];
//    [alertController addAction:otherAction];
//    
//    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil];
}

- (void)goToUpdate {
    //跳转地址链接
    NSString *str = [NSString stringWithFormat: @"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", myappid];
    UIApplication *app = [UIApplication sharedApplication];
    NSURL *url = [NSURL URLWithString:str];
    if ([app canOpenURL:url]) {
        [app openURL:url];
    }
}

@end

 

版本检查更新(ios) ios版本检查更新,不影响上线 立即下载

相关推荐

iOS版本升级时间(更新至18年11月)

iOS版本升级时间统计,手动整理,且用且珍惜,如有疑问可私信联系。

iOS 判断是否是最新版本号

【代码】iOS 判断是否是最新版本号。

weixin_45958328的博客 444

iOS开发之一句代码检测App版本的更新

iOS中App版本的检测更新、如果有更新就跳转至App Store上更新

如何免费将Mac变成动态风景展示台:Aerial屏保完整安装指南

想让你的Mac电脑闲置时不再单调乏味吗?Aerial屏保能将你的桌面变成一个展示世界各地美景的窗口,让你在休息间隙也能享受高清航拍视频带来的视觉盛宴。这款开源软件是Apple TV Aerial Screensaver的Mac移植版,完全免费,让你的Mac变身动态风景画廊。 ## 🌟 为什么选择Aerial:超越传统屏保的视觉体验 想象一下,当你的Mac处于闲置状态时,屏幕上不再是静态的图片

gitblog_00006的博客 578

StarRocks FE启动异常

服务器断电,StarRocks FE 启动失败。

qq_15138049的博客 1112

DRAM 埋入式字线(Buried Wordline)技术深度解析:从二维平面到三维凹槽

埋入式字线(bWL)及其核心的埋入式沟道阵列晶体管(BCAT)架构,无疑是 DRAM 发展史上的一次关键性革命。它在约 40nm 技术节点被行业主流采纳,成功地帮助 DRAM 产业克服了传统平面晶体管的物理缩放极限。力挽狂澜的续命技术:bWL 通过引入三维沟道结构,从根本上解决了由短沟道效应和漏电流失控引发的数据保持危机,为经典的 1T1C(单晶体管 - 单电容)DRAM 单元架构延续了超过十年的生命力。协同优化的基石技术。

m0_37606066的博客 3325

iOS 判断版本是否需要更新

//判断是否需要提示更新App- (void)shareAppVersionAlert {        if(![self judgeNeedVersionUpdate])  return ;    //App内info.plist文件里面版本号    NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];    NSSt...

QDC 2337

基于LTspice的共模电感差模/共模插入损耗仿真指南

在电源与EMC设计领域,插入损耗是衡量滤波器件抑制噪声能力的核心指标。共模电感作为EMI滤波器中最常见的元器件之一,其差模与共模插入损耗特性直接影响整体滤波方案的合规性。然而,仅依赖规格书曲线往往难以覆盖真实应用中的阻抗条件,借助SPICE仿真工具进行电路级验证已成为工程师常用的手段。LTspice凭借其轻量、高效的交流分析能力,能够帮助设计者快速搭建共模电感等效模型,并通过调整耦合系数、寄生电容等参数,还原漏感与谐振行为。本文以Wurth Elektronik的WE 744821201型号为例,从基本测试

weixin_27252001的博客 293

检测版本更新

本篇文章完美的阐述了应用启动和手动版本的检测原理!#import "HYBVersionManager.h" #import "UIAlertView+Blocks.h" #define kRequestTimeOut 60.0 @interface HYBVersionManager () { int _type; UIAlertView *_alertView; }

骁驰的技术和产品专栏 771

Case-Based Reasoning用于RAG

在做大模型应用RAG的时候,会发现一种特殊的场景,就是基于之前的case进行回答,比如法律咨询、医疗诊断等等。这种情况的问答,需要有强有力的case支持才行,有了case支持,大模型回答会更加准确。CBR这个概念已经很久了,它是一种人工智能推理方法,它的基本思想是:遇到新问题时,先回忆相似的过去案例,再基于这些案例进行调整,得到新问题的解答。Retrieve(检索):在案例库中找到与当前问题最相似的案例。Reuse(复用):借鉴案例的解决方案来应对当前问题。

sinat_28694519的博客 938

OpenClaw Manager Pro - 可视化管理工具

OpenClaw Manager Pro 是一个现代化的 Web 管理界面,用于管理多个 OpenClaw Gateway 实例。🎨美观的界面:深色主题,渐变设计,现代化 UI📡实时监控:WebSocket 实时推送状态和日志🔧完整管理:创建、编辑、删除、启动、停止 Gateway📊多渠道支持:飞书、Telegram、Discord、Slack、微信、钉钉🧩技能管理:可视化配置 61+ 个技能🌍跨平台:支持 macOS、Linux、Windows使用自定义模型系统会自动在中创建},

Maynor的博客 3085

iOS 版本更新判断

最近项目上线有版本更新判断,看到之前小伙伴写的方法比较乱,偶尔还会出现问题!花点时间自己搞了个更新方法: 在网上看到一些小伙伴的方法是直接用isEqualToString:方法判断本地和服务器版本号是否相等,YES不更新,NO进行更新。这种方法可行但是本人感觉不谨慎,毕竟有的小伙伴可能会一不小心把上线版本号改小了呢。。。。那这种方法的弊端就出现了! 下面是我自己捣鼓的方法,小伙伴们如果有更好的...

weixin_34119545的博客 174

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58= GetFlowDropDown SQL注入

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58=、eHR/OA一体化智慧云平台、智慧一卡通云平台、行业软件开发与定制、智慧企业管理信息化咨询与项目服务为核心业务的顾问式管理咨询和软件个性定制开发的高科技股份集团公司。同鑫T9eHR信息华管理系统存在SQL注入漏洞,攻击者可通过该漏洞上传shell。关闭互联网暴露面或接口设置访问权限。利用sqlmap进行shell。

iSee857的博客 700

ios 判断版本更新

在加载完界面的时候判断: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //得到app相关信息(包括版本等。。。。。) NSLog(@"%@",[NSBundle mainBundle].infoDicti...

weixin_30338481的博客 115

Xilinx平台SRIO介绍(一)RapidIO协议介绍

菜鸟到老鸟:会用工具; 老鸟到大佬:深入理解原理。 ——FPGA大叔·沃自己硕得

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

RK3288芯片MIPI-DSI显示疑难杂症大揭秘:从点不亮到花屏全攻克

本文针对RK3288芯片MIPI-DSI接口常见的显示异常问题进行系统性分析,提出了完整的排查解决方案。硬件方面,重点检查排线连接、电源供应和散热问题;软件方面,强调屏参配置、驱动版本及时序参数的精确调整。通过两个典型案例(点不亮与花屏)具体说明排查流程,并指出未来优化方向应包括提升芯片抗干扰能力、开发智能自适应驱动程序等。该手册为开发者提供了从基础原理到实际问题的全面指导,能有效缩短故障排查时间,确保显示系统稳定运行。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 659

IOS学习之如何判断版本更新

在我们使用应用时,一打开应用,如果此应用有新的版本,常常能在应用中给出提示,是否要更新此应用。所以,我们就来看看,版本更新是如何实现的。 应用 苹果给了我们一个接口,能根据应用id请求一些关于应用的信息。我们可以根据返回的信息,来判断版本是否和应用的版本一致,如果不一致,那么就出现新的版本了。这时,就需要向用户提醒有新的版本,需要更新。具体步骤如下:

南北雪树的专栏 885

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

iOS开发中判断是不是首次登录或者版本更新

判断是不是首次登录或者版本更新 -(BOOL )isFirstLauch{ //获取当前版本号 NSDictionary infoDic = [[NSBundle mainBundle] infoDictionary]; NSString currentAppVersion = infoDic[@"CFBundleShortVersionString"]; //获取上次启动应用保存的a...

a330358659的博客 253

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

iOS 判断是否有新版本更新

NSString *appleID = @"your app appleID"; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.appl

sqlite_xin的博客 227

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

iOS:判断引导页首次出现、版本更新

判断引导页首次出现方式: //选择根控制器 +(void)chooseRootViewController{ //初始化Window窗口 [AppDelegate Delegate].window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; [AppDelegate...

weixin_34292287的博客 105

iOS ——版本更新检测 判断应用版本和升级提示

ios中应用的版本判断有两种方法: 1.将你的应用版本号同步在你自己的服务器上,打开程序后去自己的服务器获取版本号和手机上的应用版本号做比较,然后去appstore升级 2.通过url获取appstore上的最新版本信息,然后和手机上的程序版本号做比较,判断是否升级。 最常用的就是方法2,下面讲讲方法2的实现过程。 第一步是去获取appstore上你的应用的版本信息,需要用

cym_bj 3062

iOS判断APP版本更新并获取更新内容

摘要:之前版本更新控制都是后台来控制的,包括更新提示内容。主要适用于APP1.0 若你的APP已经开始迭代,APP完全可以自己获取版本更新内容等信息。 具体步骤如下: 1,用 POST 方式发送请求: http://itunes.apple.com/search?term=你的应用程序名称&entity=software 1,用 get 方式发送请求 http...

weixin_30487317的博客 1252
上一篇: Dispatch Source Timer 的使用以及注意事项
下一篇: iOS强制横屏的坑
csdndimo
博客等级 码龄13年 0粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值