app版本信息获取 swift
2018-06-21 15:15:00 weixin_34192816 阅读数 3

App版本检测更新

请求URL: let appUrl = URL.init(string: "https://itunes.apple.com/lookup?id=" + appId)

结果:
{
 "resultCount":0,
 "results": []
}

需要在com/后面拼cn/,表明是那个国家。

请求URL: let appUrl = URL.init(string: "https://itunes.apple.com/cn/lookup?id=" + appId)

结果:
{
    "resultCount": 1,
    "results": [{
        "artistViewUrl": "https://itunes.apple.com/cn/developer/æ±�è��å¤�é£�ç½�ç»�ç§�æ��æ��é��å
¬å�¸/id1370226171?uo=4",
        "artworkUrl60": "https://is2-ssl.mzstatic.com/image/thumb/Purple115/v4/6c/c3/f3/6cc3f3bf-9de6-61e8-73a0-6a6834690bcb/source/60x60bb.jpg",
        "artworkUrl100": "https://is2-ssl.mzstatic.com/image/thumb/Purple115/v4/6c/c3/f3/6cc3f3bf-9de6-61e8-73a0-6a6834690bcb/source/100x100bb.jpg",
        "ipadScreenshotUrls": [],
        "appletvScreenshotUrls": [],
        "artworkUrl512": "https://is2-ssl.mzstatic.com/image/thumb/Purple115/v4/6c/c3/f3/6cc3f3bf-9de6-61e8-73a0-6a6834690bcb/source/512x512bb.jpg",
        "screenshotUrls": ["https://is1-ssl.mzstatic.com/image/thumb/Purple115/v4/36/0e/41/360e41d2-f0f7-f429-415a-b67fc0c62e3c/source/392x696bb.jpg", "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/ff/c9/f0/ffc9f021-f051-4e9b-66fa-818387627808/source/392x696bb.jpg", "https://is2-ssl.mzstatic.com/image/thumb/Purple115/v4/bf/9f/08/bf9f08e5-7cba-dedd-c159-167992cb3ced/source/392x696bb.jpg", "https://is1-ssl.mzstatic.com/image/thumb/Purple115/v4/25/a7/ba/25a7ba29-583d-eb90-7179-d1346ebcfe73/source/392x696bb.jpg", "https://is4-ssl.mzstatic.com/image/thumb/Purple115/v4/7a/32/f2/7a32f22c-1d22-2259-f19a-4e98b3dca4b1/source/392x696bb.jpg"],
        "isGameCenterEnabled": false,
        "advisories": [],
        "kind": "software",
        "features": [],
        "supportedDevices": ["iPhone5s-iPhone5s", "iPadAir-iPadAir", "iPadAirCellular-iPadAirCellular", "iPadMiniRetina-iPadMiniRetina", "iPadMiniRetinaCellular-iPadMiniRetinaCellular", "iPhone6-iPhone6", "iPhone6Plus-iPhone6Plus", "iPadAir2-iPadAir2", "iPadAir2Cellular-iPadAir2Cellular", "iPadMini3-iPadMini3", "iPadMini3Cellular-iPadMini3Cellular", "iPodTouchSixthGen-iPodTouchSixthGen", "iPhone6s-iPhone6s", "iPhone6sPlus-iPhone6sPlus", "iPadMini4-iPadMini4", "iPadMini4Cellular-iPadMini4Cellular", "iPadPro-iPadPro", "iPadProCellular-iPadProCellular", "iPadPro97-iPadPro97", "iPadPro97Cellular-iPadPro97Cellular", "iPhoneSE-iPhoneSE", "iPhone7-iPhone7", "iPhone7Plus-iPhone7Plus", "iPad611-iPad611", "iPad612-iPad612", "iPad71-iPad71", "iPad72-iPad72", "iPad73-iPad73", "iPad74-iPad74", "iPhone8-iPhone8", "iPhone8Plus-iPhone8Plus", "iPhoneX-iPhoneX"],
        "trackCensoredName": "商户助手-e融通",
        "trackViewUrl": "https://itunes.apple.com/cn/app/����-e��/id1370226172?mt=8&uo=4",
        "contentAdvisoryRating": "4+",
        "languageCodesISO2A": ["ZH"],
        "fileSizeBytes": "27520000",
        "trackContentRating": "4+",
        "sellerName": "Jiangsu Dooffe Network Technology Co., Ltd.",
        "primaryGenreName": "Utilities",
        "primaryGenreId": 6002,
        "currency": "CNY",
        "wrapperType": "software",
        "version": "1.0.1",
        "description": "我们的app是面向我们的支付系统线下拓展的收款商户。我们的收款商户提出,如果收款时,手机上能够收到通知,最好是能够播报语音的收款提示,可以为他们的工作提供巨大的便捷。",
        "artistId":"artistId",
        "artistName": "江苏多飞网络科技有限公司",
        "genres": ["工具"],
        "price": 0.00,
        "bundleId": "com.dooffe.dooffeEpay",
        "isVppDeviceBasedLicensingEnabled": true,
        "releaseDate": "2018-05-13T11:59:09Z",
        "minimumOsVersion": "10.0",
        "trackId":"trackId",
        "trackName": "商户助手-e融通",
        "formattedPrice": "免费",
        "genreIds": ["6002"],
        "currentVersionReleaseDate": "2018-05-31T18:55:25Z",
        "releaseNotes": "实时推送到账,语音播报功能"
    }]
}

swift 代码封装:

//
//  HHCheckVersionManager.swift
//  HelperApp
//
//  Created by JunQiang on 2018/3/16.
//  Copyright © 2018年 多飞. All rights reserved.
//

import Foundation

class HHCheckVersionManager: NSObject {
    
    /// app版本更新检测
    ///
    /// - Parameter appId: apple ID - 开发者帐号对应app处获取
    init(appId:String) {
        super.init()
        
        //获取appstore上的最新版本号
        let appUrl = URL.init(string: "https://itunes.apple.com/cn/lookup?id=" + appId)
        let appMsg = try? String.init(contentsOf: appUrl!, encoding: .utf8)
        let appMsgDict:NSDictionary = getDictFromString(jString: appMsg!)
        let appResultsArray:NSArray = (appMsgDict["results"] as? NSArray)!
      
        let appResultsDict:NSDictionary = appResultsArray.lastObject as! NSDictionary
        let appStoreVersion:String = appResultsDict["version"] as! String
        let appStoreVersion_Float:Double = CFStringGetDoubleValue(appStoreVersion as CFString)// Float(appStoreVersion)!

        //获取当前手机安装使用的版本号
        let localVersion:String = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
        let localVersion_Float:Double = CFStringGetDoubleValue(localVersion as CFString)// Float(localVersion)!

        //用户是否设置不再提示
        let userDefaults = UserDefaults.standard
        let res = userDefaults.bool(forKey: "NO_ALERt_AGAIN")
        //appstore上的版本号大于本地版本号 - 说明有更新
        if appStoreVersion_Float > localVersion_Float && !res {
             let alertC = UIAlertController.init(title: "版本更新了", message: "是否前往更新", preferredStyle: .alert)
             let yesAction = UIAlertAction.init(title: "去更新", style: .default, handler: { (handler) in
                  self.updateApp(appId:appId)
             })
             let noAction = UIAlertAction.init(title: "下次再说", style: .cancel, handler: nil)
                let cancelAction = UIAlertAction.init(title: "不再提示", style: .default, handler: { (handler) in
                    self.noAlertAgain()
                })
                alertC.addAction(yesAction)
                alertC.addAction(noAction)
                alertC.addAction(cancelAction)
                UIApplication.shared.keyWindow?.rootViewController?.present(alertC, animated: true, completion: nil)
            }
            else {
                let alertC = UIAlertController.init(title: "版本检测", message: "App已经是最新版本", preferredStyle: .alert)
                let yesAction = UIAlertAction.init(title: "我知道了~", style: .default, handler: { (handler) in
                    
                })
                alertC.addAction(yesAction)
                UIApplication.shared.keyWindow?.rootViewController?.present(alertC, animated: true, completion: nil)
            }
    }
    
    //去更新
    func updateApp(appId:String) {
        let updateUrl:URL = URL.init(string: "https://itunes.apple.com/cn/app/id" + appId)!
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(updateUrl, options: [:], completionHandler: nil)
        } else {
            // Fallback on earlier versions
            UIApplication.shared.openURL(updateUrl)
        }
    }
    
    //不再提示
    func noAlertAgain() {
        let userDefaults = UserDefaults.standard
        userDefaults.set(true, forKey: "NO_ALERt_AGAIN")
        userDefaults.synchronize()
    }
    
    //JSONString转字典
    func getDictFromString(jString:String) -> NSDictionary {
        let jsonData:Data = jString.data(using: .utf8)!
        let dict = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers)
        if dict != nil {
            return dict as! NSDictionary
        }
        return NSDictionary()
    }
    
}

使用方式: _ = HHCheckVersionManager(appId: kAppId)

大神掠过,欢迎指出问题~~~

2015-05-29 17:14:00 weixin_34365635 阅读数 18

使用Swift读取App版本信息

背景:项目中有一需求,在某处显示当前app的版本信息
使用swift如何去读取呢?
先上代码:

let infoDictionary = NSBundle.mainBundle().infoDictionary
let shortVersion: String? = infoDictionary! ["CFBundleShortVersionString"] as? String
let majorVersion = (shortVersion!= nil) ? shortVersion! : "0.0" //在我的demo中是1.0

虽然读取到了,但是这个CFBundleShortVersionString 是个什么鬼,这东西又是从哪里来的呢?明明在版本定义的时候叫做Version,值为1.2 。如图一:

276844-0f5837e8e8ecb5be.png
图一

带着疑问,来点击项目目录下的/Supporting Files/Info.plist,这里存放的是项目的配置信息。在这里发现了不得了的东西。

276844-3392b178e7828d87.jpg
2.jpg

Bundle versions string(注意中间的空格),跟前边使用的api很相似啊,尝试修改下这个参数,编译一下,再回去看General下的Version 果然变成1.7了。反过来行不行呢?修改下General下的Version为1.0,/Supporting Files/Info.plist中的Bundle versions string的值又变回了1.0。
可是,后边还有个short不知道啥意思。

尝试

let infoDictionary = NSBundle.mainBundle().infoDictionary
let shortVersion: String? = infoDictionary! ["short"] as? String //shortVersion 为 nil

此路不通。

右键 Info.plist -> open as Preview

276844-9fcba70ece91b067.jpg
3.jpg

原来你在这里!
类似的,我们尝试下获取app的名字

let cfname: String? = infoDictionary! ["CFBundleName "] as? String
println("\(cfname)"); //firstApp

ok,使用Swift读取App版本信息就简单介绍到这里,如有错误请 打脸 指正,不胜感激!

同时,我必须的感谢 Wealon Notecode ,在我学习swift的过程中给予的帮助,你们都是我的好老师O(∩_∩)O~


更多博客推荐

2017-10-25 09:43:30 Keep_Moving31038 阅读数 212
func versionCheck(){
    let infoDictionary = NSBundle.mainBundle().infoDictionary
    let appDisplayName:AnyObject? = infoDictionary["CFBundleDisplayName"] //程序名称
    let majorVersion :AnyObject? = infoDictionary ["CFBundleShortVersionString"]//主程序版本号
    let minorVersion :AnyObject? = infoDictionary ["CFBundleVersion"]//版本号(内部标示)
   //设备信息
    let iosVersion : NSString = UIDevice.currentDevice().systemVersion //ios版本
    let identifierNumber = UIDevice.currentDevice().identifierForVendor //设备udid
    let systemName = UIDevice.currentDevice().systemName //设备名称
    let model = UIDevice.currentDevice().model //设备型号
    let localizedModel = UIDevice.currentDevice().localizedModel //设备区域化型号如A1533

    let appVersion = majorVersion as! String
    print(appVersion)
}


作者:小黑Swift
链接:http://www.jianshu.com/p/895bd97713c5
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2016-06-13 20:40:39 cos_sin_tan 阅读数 1619

func versionCheck(){

        let infoDictionary = NSBundle.mainBundle().infoDictionary

        let appDisplayName: AnyObject? = infoDictionary!["CFBundleDisplayName"]

        let majorVersion : AnyObject? = infoDictionary! ["CFBundleShortVersionString"]

        let minorVersion : AnyObject? = infoDictionary! ["CFBundleVersion"]

        let appversion = majorVersion as String

        let iosversion : NSString = UIDevice.currentDevice().systemVersion   //ios 版本

        let identifierNumber = UIDevice.currentDevice().identifierForVendor   //设备 udid

        let systemName = UIDevice.currentDevice().systemName   //设备名称

        let model = UIDevice.currentDevice().model   //设备型号

        let localizedModel = UIDevice.currentDevice().localizedModel   //设备区域化型号  A1533

 

        

        println(appversion)

    }





majorVersion 主程序版本号

minorVersion build 版本号
复制代码
2016-11-23 17:52:00 weixin_34388207 阅读数 5

我们这里描述的不是svn 或者是git 的使用
本地建立一个版本管理类对于版本的更新和版本相关内容的使用会变的很方便。也是 我们代码大神话的必要之路 。
当然现在商店版的项目不需要做检查更新等功能(appstore有新版本会提示),有些项目还是会有版本更新功能的
废话不多说直接上代码。

<pre>
import UIKit
class VersionX: NSObject {
static let current = VersionX()
//软件下载地址
var appurl = ""
//当前版本
var versionX = ""
//是否强制升级 //1强制升级 2不强制 3无需升级
var isforce = ""
var isAppstore = false //true 是生产环境 false 测试版/企业版
func save(){
NSUserDefaults.standardUserDefaults().setValue(appurl, forKey: "APPURL")
NSUserDefaults.standardUserDefaults().setValue(version, forKey: "VERSION")
NSUserDefaults.standardUserDefaults().setValue(isforce, forKey: "FORCE")
NSUserDefaults.standardUserDefaults().setValue(isforce, forKey: "AppSTROE")
}

static func getCurrent() -> VersionX{
    if let value = NSUserDefaults.standardUserDefaults().stringForKey("APPURL") {
        current.appurl = value
    }else{
        current.appurl = ""
    }
    
    
    if let value = NSUserDefaults.standardUserDefaults().stringForKey("VERSION") {
        current.versionX = value
    }else{
        current.versionX = "0.0.1"
    }
  
    if let value = NSUserDefaults.standardUserDefaults().stringForKey("FORCE") {
        current.isforce = value
    }else{
        current.isforce = ""
    }
    
    current.isAppstore =   NSUserDefaults.standardUserDefaults().boolForKey("AppSTROE")

    return current
}

}
</pre>

该类的使用就简单来。企业版项目要求从服务器对比版本提示更新
<pre>
func goversion(){

    //检查版本更新
    if VersionX.current.isAppstore == false{
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "SETINGUPFATE")
    let  appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate
     appdelegate.upDataVisions()
    }

}

</pre>

代理中的代码
<pre>
func upDataVisions(){
// 2 ios 1 andorid
//现在的版本号
var newVer = VersionX.current.versionX as String
if newVer == ""{
let newVer = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String

    }
    let   URL =  Const.URL_UPDATA + "?appver=" + newVer + "&osType=2"
    
    Http.manager().GET(URL , parameters : nil,
        success: { (req:AFHTTPRequestOperation!, ret:AnyObject!) -> Void in
            
                let tmpdata = ret["data"] as! [String : AnyObject]
                
                if let value = tmpdata["apkurl"] as? String {
                     VersionX.current.appurl = value
                }
            
               if let value = tmpdata["isforce"] as? String {
                   VersionX.current.isforce = value
                }

       let FORCE = String (tmpdata["isforce"] as! NSNumber)
            //1强制升级  0不强制   3无需升级
           if (FORCE == "1") {
            if let value = tmpdata["ver"]  {
               //对比版本是否需要升级
                let  value = value.stringByReplacingOccurrencesOfString(".", withString: "")
                let  newVer = newVer.stringByReplacingOccurrencesOfString(".", withString: "")
                if  Int(newVer)   < Int(value) {
                    let alert = UIAlertView(title: "提示", message: "有新的版本可以升级现在,是否立刻升级?", delegate: self, cancelButtonTitle: nil, otherButtonTitles: "是")
                    alert.tag = 300
                    alert.show()
                }  else  {
                   let alert = UIAlertView(title: "提示", message: "已是最新版本", delegate: nil, cancelButtonTitle:nil, otherButtonTitles: "是")
                   alert.show()
                }
            }
            if let value = tmpdata["ver"] as? String {
                VersionX.current.versionX = value
            }
            }else if (FORCE == "0"){
            
                if let value = tmpdata["ver"] {
                    
                    //对比版本是否需要升级
                    let  value = value.stringByReplacingOccurrencesOfString(".", withString: "")
                    
                   let  newVer = newVer.stringByReplacingOccurrencesOfString(".", withString: "")
                    
                    if  Int(newVer)   < Int(value) {
                    
                        let alert = UIAlertView(title: "提示", message: "有新的版本可以升级现在,是否立刻升级?", delegate: self, cancelButtonTitle: "否", otherButtonTitles: "是")
                        alert.tag = 200
                        alert.show()
                       
                   }  else  {
                      let alert = UIAlertView(title: "提示", message: "已是最新版本", delegate: nil, cancelButtonTitle:nil, otherButtonTitles: "是")
                        alert.show()
                   }
                }
                if let value = tmpdata["ver"] as? String {
                    VersionX.current.versionX = value
                }
            }else {
               let tempversion = NSUserDefaults.standardUserDefaults().boolForKey("SETINGUPFATE")
               if  tempversion == true {
                NSUserDefaults.standardUserDefaults().setBool(false, forKey: "SETINGUPFATE")
                let alert = UIAlertView(title: "提示", message: "已是最新版本", delegate: nil, cancelButtonTitle:nil, otherButtonTitles: "是")
                alert.show()
               }
            }
            //保存信息
            let   ver = VersionX()
            ver.appurl = tmpdata["apkurl"] as! String
            ver.versionX = tmpdata["ver"] as! String
            ver.isforce = String(tmpdata["isforce"] as! NSNumber)
            ver.save()         
}, failure: { (req:AFHTTPRequestOperation!, err:NSError!) -> Void in
            Toast.show("获取信息失败", ti: 1)
    })
}

</pre>

我们项目时企业版可以跳到safri去更新。如果是商店版时隐藏更新。
<pre>
//检查更新功能是否需要隐藏
if VersionX.current.isAppstore == false{
upDataVisions()
}
</pre>

[iOS开发]使用Swift检测系统版本信息

阅读数 1

2019独角兽企业重金招聘Python工程师标准>>>...

博文 来自: weixin_34401479

iOS获取设备与APP信息——swift版

阅读数 17

我是创建了一个单独的类(XLAppManager),用来处理获取设备与APP信息的相关内容,步骤如下:1、创建继承自NSObject的一个类,将其命名为:XLAppManager;2、将XLAppManager创建成一个单例:staticletshared=XLAppManager()privateoverrideinit(){...

博文 来自: weixin_33757911

Swift通过正则表达式获取匹配的APP版本号

阅读数 11

需求:后台判断当前版本来通知前台弹出更新app提示。实现:获取当前版本号,传入后台,通过后台返回来实现弹框。因为app在发布测试时为区分不同服务器版本,版本号会出现例如1.0.0.0-test、1.0.0.0-formal等等格式的字符串,正式release时只能是3位版本号1.0.0。而后台的检测又是必须要传入4位纯数字版本号(1.0.0.0),所以需要由前台来做处理。当为测试...

博文 来自: qq_37269542

最小的Swift App

阅读数 11

如何通过通过纯粹的代码,而不依赖于Xcode的StoryBoard,来完成一个App?首先做些操作性的工作,具体过程是这样的:打开xcode创建一个SingleViewAppXcode会进入主要编辑界面。此时,我们打开AppDelegate.swift文件然后覆盖源代码为如下:importUIKit@UIApplicationMainclassAp...

博文 来自: weixin_33735676

swift -单糖app

阅读数 625

单糖——良品生活指南:家居零食、礼物美妆、海淘购物感兴趣的朋友可以去appstore下载iOS版下载地址说明本程序仅供学习交流,不可用于任何商业用途。说明因为公司使用的是Objective-C开发app,没有使用swift来开发,所以决定自己研究Swift,研究Swift的时间不长,对于Swift的基本语法有了大致的了

博文 来自: yangmeng13930719363
没有更多推荐了,返回首页