APP版本更新

Swift-App版本更新 iOS开发中,有时会有这种需求,在AppStore上出现新版本时,应用内弹窗提示用户更新.自动提示更新的实现方案分为两种: 第一种,自己服务器提供一个接口,通过请求,获取app的相关的版本信息,如:是否需要更新,以及更新的地址等信息 第二种,就是利用苹果的appstore 提供的相关api进行查询更新.http://itunes.apple.com/cn/lookup?id=你的APP 阅读详情

如果我们要检测app版本的更新,那么我们必须获取当前运行app版本的版本信息和appstore 上发布的最新版本的信息。


当前运行版本信息可以通过info.plist文件中的bundle version中获取:

[cpp]  view plain copy
  1. NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];  
  2.     CFShow(infoDic);  
  3.       
  4.     NSString *appVersion = [infoDic objectForKey:@"CFBundleVersion"];  

这样就获取到当前运行的app的版本了


要获取当前app store上的最新的版本,有两种方法,

一、在某特定的服务器上,发布和存储app最新的版本信息,需要的时候向该服务器请求查询。


二、从app store上查询,可以获取到app的作者,连接,版本等。官方相关文档

www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.htm


具体步骤如下:
1,用 POST 方式发送请求:
http://itunes.apple.com/search?term=你的应用程序名称&entity=software

更加精准的做法是根据 app 的 id 来查找:
http://itunes.apple.com/lookup?id=你的应用程序的ID

#define APP_URL http://itunes.apple.com/lookup?id=你的应用程序的ID

你的应用程序的ID 是 itunes connect里的 Apple ID

2,从获得的 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; 
      }  
    );  
}  

然后从中取得 results 数组即可,具体代码如下所示:

NSDictionary *jsonData = [dataPayload JSONValue];  
NSArray *infoArray = [jsonData objectForKey:@"results"];  
NSDictionary *releaseInfo = [infoArray objectAtIndex:0];  
NSString *latestVersion = [releaseInfo objectForKey:@"version"];  
NSString *trackViewUrl = [releaseInfo objectForKey:@"trackViewUrl"];  

如果你拷贝 trackViewUrl 的实际地址,然后在浏览器中打开,就会打开你的应用程序在 appstore 中的介绍页面。当然我们也可以在代码中调用 safari 来打开它。
UIApplication *application = [UIApplication sharedApplication];  
[application openURL:[NSURL URLWithString:trackViewUrl]];  


代码如下:

-(void)onCheckVersion

{

    NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];

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

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


    NSString *URL = @"http://itunes.apple.com/lookup?id=你的应用程序的ID";

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

    [request setURL:[NSURL URLWithString:URL]];

    [request setHTTPMethod:@"POST"];

    NSHTTPURLResponse *urlResponse = nil;

    NSError *error = nil;

    NSData *recervedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];

    

    NSString *results = [[NSString alloc] initWithBytes:[recervedData bytes] length:[recervedData length] encoding:NSUTF8StringEncoding];

    NSDictionary *dic = [results JSONValue];

    NSArray *infoArray = [dic objectForKey:@"results"];

    if ([infoArray count]) {

        NSDictionary *releaseInfo = [infoArray objectAtIndex:0];

        NSString *lastVersion = [releaseInfo objectForKey:@"version"];

        

        if (![lastVersion isEqualToString:currentVersion]) {

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

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

            alert.tag = 10000;

            [alert show];

        }

        else

        {

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"更新" message:@"此版本为最新版本"delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

            alert.tag = 10001;

            [alert show];

        }

    }

}

- (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];

        }

    }

}

uniapp校验app版本并更新 最近用uniapp写了一个安卓壳子做app,遇到一个需求,校验app版本并更新。通过对比线上版本号和app自己的版本号的差异,唤起更新弹窗。 阅读详情

相关推荐

checkVersion-iOS:用于检查 AppStore 上是否有新版本的代码

检查更新iOS 用于检查 AppStore 上是否有新版本的代码。 此代码是基于代码的版本。 用法 您可以通过调用强制更新 CheckUpdate.shared.showUpdate(withConfirmation: false) 或者用户可以通过调用选择是现在更新还是稍后更新 CheckUpdate.shared.showUpdate(withConfirmation: true) 重要的 代码里面有一个来自 iTunes 的链接。 在那里,您应该注意并放置应用程序可用的国家/地区。 像这样: http://itunes.apple.com/<country>/lookup?bundleId=\(identifier) : http://itunes.apple.com/<country>/lookup?bundleId=\(identifier) 例如: 如果应用程序在巴

iOS通过iTunes search检测版本更新,并提示用户更新!

如果我们要检测app版本的更新,那么我们必须获取当前运行app版本的版本信息和appstore 上发布的最新版本的信息。 当前运行版本信息可以通过info.plist文件中的bundle version中获取: [cpp] view plaincopy NSDictionary *infoDic = [[NSBundle mai

jarry622的专栏 703

ios-版本检测更新.zip

1,一句代码,使用类方法,简单方便。 2,获取Appstore上关于应用的所用信息,以模型的形式保存,使用方便。 3,既有系统的Alert,也可自定义Alert。

Oracle OLTP表压缩技术

Search Results for: Oracle OLTP表压缩技术 Oracle OLTP表压缩技术 2013/02/21 by Maclean Liu 暂无评论 对于启用11g OLTP压缩特性的表而言,当发生INSERT时若块内部空间的阈值未达到则不作压缩,若INSERT后达到阈值则触发压缩,如上图所示。 该压缩一般与commit/rollback无关

chairrat的专栏 482

lift off工艺为什么常用蒸发的方式镀膜?

电子束蒸发中,蒸发物质从源头直接升华并沿直线路径沉积到晶圆上,它可以避免金属在掩模侧壁的覆盖,只在表面进行沉积。在镀膜结束后,在进行光刻胶剥离时,去胶液无法与光刻胶接触反应,导致光刻胶剥离很困难。欢迎加入我的半导体制造知识星球社区,目前社区有1900人左右。我观察到晶圆厂中lift off工艺,镀膜都是用的电子束蒸发的方式,很少有用磁控溅射的方式,为什么?需要增加撕胶工序,将胶面上覆盖的膜层撕掉,使光刻胶露出,这样才容易剥离。上图为磁控溅射的膜层截面图,去胶液很难突破侧壁膜层,进行反应。

1687

手把手教你用vLLM在昇腾910B上部署Qwen3-Embedding-8B模型(保姆级避坑指南)

本文详细介绍了如何在昇腾910B芯片上使用vLLM推理引擎部署Qwen3-Embedding-8B模型的全流程,包括环境准备、vLLM-ascend定制化安装、模型获取与校验、环境变量配置、服务启动参数优化、性能压测及生产级部署建议。特别针对昇腾生态的开发者,提供了保姆级的避坑指南和实用技巧,帮助实现高效稳定的模型部署。

weixin_28726671的博客 466

iOS 搜索功能实现

本文主要讲述了如何使用UISearchController实现搜索栏,现在把实现思路和代码整理出来分享给iOS程序员兄弟们,希望给他们的开发工作带来帮助。 查看源代码 打印帮助 1   UISearchController 继承自UIViewController     // 在iOS 8.0以上版本中, 我们可以使用UISe

ZhengYanFeng1989的博客 2186

射频电源与等离子体技术:原理、应用与优化策略

射频电源(RF Power Supply)作为高频交流电信号发生器,在半导体制造和材料处理中扮演关键角色。其核心原理是通过高频电场激发气体产生等离子体,这种电离气体包含电子、离子和活性基团,具有独特的非平衡特性。技术价值体现在等离子体密度和电子温度的可控性上,使得在刻蚀和沉积工艺中能精确调控材料处理效果。应用场景广泛覆盖PECVD、深槽刻蚀等工业流程,其中13.56MHz ISM频段因其全球合规性成为行业标准。优化策略包括双频驱动和阻抗匹配网络设计,可显著提升工艺均匀性和设备效率。

weixin_29163797的博客 391

iOS自动更新如何实现

APP检测更新可以使用两种方法。第一种是和安卓等系统一样,获取自己服务器的APP版本号与已安装的APP版本号比较;第二种是根据已发布到app store上的应用版本号与已安装的APP版本号比较更新。第一种检测更新方法的优点是:检测更新速度快、检测稳定;缺点是:和app store上的应用版本号不同步(app上架需要审核时间,不确定什么时候成功更新到app store上)。第二种方法检测更...

weixin_30905981的博客 334

《一》:LBE,VR 大空间系列——场景环境需求解析

当前,大量 VR 体验活动在室内场地开展。因此,对于场地照明有特定要求:除天花板外,场地的所有表面均需有照明覆盖。这是为了保证玩家无论处于场地的哪个位置,地面与墙面都不会出现明显的影子。场地内不建议安装射灯或高强度的点光源,若已安装此类灯具,需使用柔光板进行遮盖。此外,要避免在阳光下使用 VR 设备台。参考图(请忽略其中Maker标签)

unitygroup的博客 944

把 SAP Event Mesh 讲透:从事件驱动架构到 SAP BTP 落地实践

摘要: SAP Event Mesh是SAP BTP上的云端消息与事件服务,支持企业构建解耦、弹性的应用架构。它通过异步通信模式(如发布/订阅)解决传统同步集成的痛点,如系统紧耦合、链路脆弱等问题。核心能力包括事件驱动通信、可靠消息投递(支持至少一次送达)、与SAP生态深度集成(如S/4HANA事件扩展)以及混合环境支持。典型场景包括订单处理、库存同步等,发布方只需发出业务事件,订阅方按需消费,避免系统间直接依赖,符合Clean Core理念。两种关键模式为广播式的Publish/Subscribe和定向的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 116

iOS检查版本更新、APPStore更新地址和评价地址

From: http://snowyshell.blog.163.com/blog/static/2209140342013924929888/ 以下XXX是itunesconnect网站上对应app的Apple ID,它是一串纯数字 检查更新网址: APPLE_URL :"http://itunes.apple.com/lookup?id=XXX" 通过检查最

caizhongtao的专栏 3818

译码器Multisim电路仿真汇总——硬件工程师笔记

本文详细介绍了74LS139D和74LS138D两种TTL译码器的功能特点及应用。74LS139D是2线-4线译码器,具有低电平有效输出和使能控制功能,常用于地址译码和数据分配。74LS138D是3线-8线译码器,通过3位输入实现8路输出控制,广泛应用于微处理器系统。文中提供了两种芯片的引脚说明、真值表和典型应用电路,并附有硬件工程师笔试面试相关资源链接。这些基础知识对数字电路设计和硬件工程师面试准备具有重要参考价值。

XU157303764的博客 1262

uniapp实现app版本更新弹窗,处理自主更新以及强制更新

强制更新的弹窗通常会中断用户的操作,并要求用户立即进行更新。您可以使用uni-app的弹窗组件,如uni.showModal()或者自定义弹窗组件来实现。在弹窗中禁用关闭按钮,或者提供一个单一的更新按钮,并在点击后跳转到更新页面或进行自动更新。自主更新的弹窗可以提供一个提示信息,告知用户有新版本可用,并提供一个按钮供用户点击进行更新。如果需要更新,根据更新类型(自主更新或强制更新)显示相应的弹窗。根据用户的选择,如果用户点击了更新按钮,您可以使用uni-app的网络请求API,如。下载最新的App安装包。

m0_52223449的博客 6960

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

2025美赛E题为农业留出空间(附代码+全保姆教程)Making Room for Agriculture

有机农业的核心在于减少化学投入,促进自然控制和可持续性。变量定义CCC: 作物种群III: 害虫种群PPP: 天然捕食者种群(蝙蝠、鸟类等)BBB: 生物多样性水平(以种类数量表示)SSS: 土壤健康指数(影响植物繁殖与作物生长)EEE: 农业生态系统的整体稳定性。

博客 1495

App检测版本更新 iOS

在前一段时间,苹果的审核标准有所变化:在程序中不能出现检测版本更新的入口。看到这个信息的时候以为在app中不能有检测更新或强制更新的功能,最后发现自己还是犯了望文生义的大错误。苹果建议采用系统的自动更新,但在系统的设置里可以把自动更新关掉。这就导致app有新版本,不能及时被用户更新,所以检测版本和版本更新的功能还是必不可少的。但是一定不要有检测更新的入口呦,如button之类的。否则被苹果给拒了就

Nick的专栏 4591

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

app版本更新的四种实现方式

版本更新大致分为四大类:app负责单版本检测测与更新(自己实现版本更新),通过苹果商店的自动更新机制进行自动更新和通过第三方平台实现版本检测与更新(如:友盟的版本检测与更新),app和服务器联合实现多版本检测测与更新(自己实现版本更新)方案。  通过苹果商店的自动更新机制进行自动更新是,应用更新时,手机会收到苹果商店的通知,并启动应用程序的自动更新下载应用并更新。但是可能出现手机收不到版本更新通

LeapDev的博客 9215

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

iOS APP 比较版本号,检测更新

1.获取当前APP的版本号 #pragma mark - 获取APP当前版本号 - (NSString *)getCurrentVersion { NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; NSString *currentVersion = [infoDict objectForKey:@"...

俊而不逊的博客 2196

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

版本更新,uni-app

//更新 // checkUpdate() { // plus.nativeUI.showWaiting("检测更新..."); // uni.request({ // url:'http://119.3.210.82:8081/ld/app/ap...

heyuqing32的博客 1682

uni-app版本更新 整包更新

onLaunch <script> export default { globalData: { userCode: uni.getStorageSync('user').code }, onLaunch: function() { // #ifdef APP-PLUS uni.request({ url: 'http://192.168.3.139:9301/' + 'version/check', data: {}, method: '

郑州彭于晏 944

App版本更新接口的设计

工作这几年碰到的版本检测升级的接口也算是五花八门,啥样的都有,但肯定有的功能是有个apk的下载链接,能间接或直接提示你是强制还是非强制更新:- 间接是指提供你后台最新版本号,让你自己与本地版本号通过比较得出是否升级;- 直接就是后台接口直接返回个Boolean类型告诉你是强制或者非强制更新。个人认为一个好的版本检测接口需要设计的更灵活更清晰用起来更方便,下面就我理解的接口设计如下(如思路有误,欢迎...

初来乍到 6096

uni-app 版本更新

问题:做版本更新,用自带的提示弹窗太丑,想自己布局,在App.vue中又写不了布局 查了下资料 用纯js实现版本更新提示弹窗 可配置是否强制更新,可看到下载的进度 实现方式: 具体实现的js // #ifdef APP-PLUS /**** 此文件说明请看注释 *****/ // 可以用自己项目的请求方法 // 请求配置说明:https://ext.dcloud.net.cn/plugin?id=822 import {getAppVersion} from '@/utils/api.js'

缘来侍你的博客 608

uniapp实现app版本更新

app版本更新实现

春晨秋遇的博客 2344

实现App版本更新功能的前后台代码

var version = ""; mui.ready(function() { mui.plusReady(function() { version = plus.runtime.version; checkVersion(); }) }) /** * @param {String} userId 用户名 * @param {String} password 密码 */ f...

jiaonizuoren的博客 2403

android app版本更新升级

参考了其他一些大神的文章,最后自己也写了一下作为一个笔记吧,因为是菜鸟,希望有发现错误的地方能够帮忙指出,本文最后也提出几个我发现尚未被我解决的问题,希望大家能帮忙看看。 demo的逻辑过程: 1.进入程序 2.检查是否有版本更新,如果有则询问用户是否更新,否则维持原状 3.检测当前网络状态并且询问用户是否进行版本更新,如果是则进行更新,否则维持原状 4.切换

TTTPlusR 6906
上一篇: iOS开发笔记
下一篇: iOS 压缩和解压
JustinACE
博客等级 码龄12年 0粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值