iOS 想要检查 App 当前版本是否为最新,一般的方案大概都是服务器自己提供一个接口来获取 App 最新版本是多少,然后再做出相应提示是否需要更新,但是接口需要手动维护,应用要审核,还得等审核通过以后才能更新版本号,其实苹果提供了一个 iTunes 接口,能够查到 AppAppStore 上的状态信息,既省事又准确,下面记录一下具体实现方法

返回的数据结构:

{"resultCount":1,"results":[{"screenshotUrls":Array[5],"ipadScreenshotUrls":Array[0],"appletvScreenshotUrls":Array[0],"artworkUrl60":"XXXXX","artworkUrl512":"XXXXX","artworkUrl100":"XXXXX","artistViewUrl":"XXXXX","supportedDevices":Array[49],"isGameCenterEnabled":false,"kind":"software","features":Array[0],"advisories":Array[0],"trackCensoredName":"XXXXX","languageCodesISO2A":Array[1],"fileSizeBytes":"XXXXX","contentAdvisoryRating":"4+","trackViewUrl":"XXXXX",     //下载地址"trackContentRating":"4+","releaseNotes":"1.XXXXX。
2.XXXXX!
3.XXXXX!","isVppDeviceBasedLicensingEnabled":true,"primaryGenreId":XXXXX,"genreIds":Array[2],"trackId":XXXXX,"trackName":"XXXXX","sellerName":"XXXXX","primaryGenreName":"XXXXX","currency":"CNY","wrapperType":"software","version":"2.5.1",          //线上版本号"description":"XXXXX","artistId":"XXXXX","artistName":"XXXXX","genres":Array[2],"price":0,"bundleId":"XXXXX","releaseDate":"XXXXX","minimumOsVersion":"XXXXX","currentVersionReleaseDate":"2018-09-12T10:33:48Z","formattedPrice":"免费"}]
}
        //本地版本信息let infoDict:Dictionary = Bundle.main.infoDictionary!let app_Version:String = infoDict["CFBundleShortVersionString"] as! Stringlet url = URL(string: "http://itunes.apple.com/cn/lookup?id=XXX")SVProgressHUD.show()NetworkTools.shared._manger.request(url!, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: nil).validate().responseJSON { [weak self](response) inguard let strongSelf = self else { return }switch(response.result) {case .success(let value):SVProgressHUD.dismiss()print(value)guard let resultDict = value as? [String : Any], resultDict.keys.count > 0 else {print("无数据:\(value)")return}let tempArr = resultDict["results"] as? [[String: Any]]if let resultsArr = tempArr {if resultsArr.count < 1 {print("此APPID为未上架的APP或者查询不到")return}let itunesVersion = resultsArr.first!["version"] as! String//trackViewUrl 为更新地址let trackViewUrl = resultsArr.first!["trackViewUrl"] as! Stringif strongSelf.compareVersion(str1: app_Version, str2: itunesVersion) {var alertController = UIAlertController()alertController = UIAlertController(title: "版本更新", message: "请下载最新版App否则无法使用!", preferredStyle: .alert)let certainAction = UIAlertAction(title: "确定", style: .default) { (action) inlet url = URL(string: trackViewUrl)UIApplication.shared.openURL(url!)}alertController.addAction(certainAction)strongSelf.present(alertController, animated: true, completion: nil)}else {var alertController = UIAlertController()alertController = UIAlertController(title: "版本更新", message: "已是最新版本!", preferredStyle: .alert)let cancelAction = UIAlertAction(title: "确定", style: .cancel, handler: nil)alertController.addAction(cancelAction)strongSelf.present(alertController, animated: true, completion: nil)}}case .failure(_):SVProgressHUD.dismiss()SVProgressHUD.showError(withStatus: "检查更新失败!")}}

版本字符串的比较方法

iOS 优雅的比较版本号

//版本号比较private func compareVersion(str1: String, str2: String) -> Bool {let compareResult = str1.compare(str2, options: .numeric, range: nil, locale: nil)return (compareResult == .orderedAscending)}

也可以写成扩展

extension String
{func ck_compare(with version: String) -> ComparisonResult {return compare(version, options: .numeric, range: nil, locale: nil)}func isNewer(than aVersionString: String) -> Bool {return ck_compare(with: aVersionString) == .orderedDescending}func isOlder(than aVersionString: String) -> Bool {return ck_compare(with: aVersionString) == .orderedAscending}func isSame(to aVersionString: String) -> Bool {return ck_compare(with: aVersionString) == .orderedSame}
}作者:Cocody
链接:https://www.jianshu.com/p/22d37844df2d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Swift 检查版本更新 itunes相关推荐

  1. iOS 【获取 AppStore 的上架信息 - 检查版本更新】

    最近有朋友问我怎么在自己的 App 中添加提示更新.甚至强制更新 App 的有关内容.简单说一下,通过比较 AppStore 和 当前安装 App 的版本号差异,如果 AppStore 中的版本号较大 ...

  2. 检查版本更新,跳转到腾讯应用宝进行下载

    检查版本更新,跳转到腾讯应用宝进行下载 private void intit_getClick() { if (isAvilible(this, "com.tencent.android.q ...

  3. (1)python pyinstaller打包exe添加版本信息(2)python获取exe版本信息(3)pyqt5开发exe添加检查版本更新功能

    笔者总结不容易点个关注吧    一键三联哦!       感谢您! python pyinstaller打包exe添加版本信息 打包并添加版本信息 注意!这里有个坑 如果第二次要修改版权信息 要将fi ...

  4. Android 检查版本更新 Server后台下载

    问题来了,平时开发应用也许你会遇到这种场景:应用启动检查服务器版本,若大于当前版本,则要从网络上下载APK文件,并在Activity上展示进度条. 版本更新,无非是下载apk文件,安装apk. //其 ...

  5. [Swift]检查API可用性

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  6. Android 检查版本更新服务并下载,BLE蓝牙连接,BLE蓝牙连接1对多及通用工具

    https://github.com/inksnow/InksLibrary 引用方法: 1. aar 应用 apply plugin: 'com.android.application' andro ...

  7. java检查版本更新失败_华为审核被拒:检查HMS Core更新失败

    问题背景 集成华为HMS SDK后的游戏,华为方在审核时予以驳回,给出的理由是:在未安装或需更新华为移动服务版本(HMS Core)的手机上,启动游戏提示安装华为移动服务(HMS Core),点击安装 ...

  8. 检查数组中的子字符串– Java,Python和Swift

    In this quick tutorial, we'll learn how to quickly search a part of a string in an Array. We'll be d ...

  9. (0008) iOS 开发之iTunes Connect 显示可供销售,AppStore 不显示新版本

    iTunes Connect 显示可供销售,但是AppStore 就是不显示新版本(异于往常版本更新) 前言:开发者账号一年到期之后的第一次提交新版本. 这次版本更新,从上传到审核通过不足8小时,快点 ...

最新文章

  1. 【Socket】Python UDP和TCP的socket实例
  2. 面向技术编程,面向工资编程,面向用户编程?
  3. mysql节假日表_节假日常见的数据库磁盘空间处理小结
  4. 深度学习之利用TensorFlow实现简单的卷积神经网络(MNIST数据集)
  5. 设计包含min()函数的栈
  6. 美国款游戏计算机,美国一程序员设计计算机游戏 悼念早逝爱子(图)
  7. Java ObjectInputStream readUnshared()方法与示例
  8. Axure高保真智慧消防远程监管系统数据可视化大屏看板+web端高保真大数据分析平台看板+大数据交换配置管理平台大屏动态可视化看板
  9. python3.7版本简介_Python实例100个(基于最新Python3.7版本)
  10. 软考高项论文范文——论信息系统项目的沟通管理
  11. 两个PDF怎么合并一个pdf
  12. 【面试复习系列】常用机器学习算法知识点及其解析,面试官会考的几乎都有,欢迎补充
  13. Auto CAD:图纸常用线宽、线型表之详细攻略
  14. 计算机操作系统——银行家算法
  15. ssm智慧养老服务平台毕业设计-附源码211709
  16. 这是我的第一个博客有关javascrit的
  17. mysql灯是红色的_报警指示灯为什么是红色?
  18. JavaScript 个人笔记3(详细BOMDOM)
  19. UNI-APP在使用SubNvue原生子窗体时,清理缓存的问题
  20. php连接sap hana数据库,SAP Hana 数据库编程接口 - ODBC

热门文章

  1. 香鸡排三部曲:完结篇
  2. 这个儿童节,我们和小时候有什么区别?
  3. 计算机机房一般在几楼,21层的楼房设备层一般在几楼
  4. win10安装linux系统视频播放器,u盘安装linux视频mac制作win10安装u盘
  5. 机器人学笔记之——空间描述和变换:姿态的其他描述方法
  6. evplayer2可以多设备登录吗_EVPlayer2
  7. java音乐播放器视频_java 实现音乐播放器的简单实例
  8. 两分钟研究透idea中Git文件的颜色,绿红蓝白灰
  9. How to become a hacker 译文(如何成为一名黑客)
  10. 硬核科普!关于5G辐射,你了解多少!