[swift] 現在のアプリのバージョンを出力・比較してアップロードを促す

目次

現在のアプリのバージョンを出力・比較してアップロードを促す

現在のアプリのバージョンを出力するには
NSBundle.mainBundle().objectForInfoDictionaryKey(“CFBundleShortVersionString”)
NSBundle.mainBundle().objectForInfoDictionaryKey(“CFBundleVersion”)
で出力できる

Stringで出力されるので、バージョン比較するときはFloatなどに変換するとよい

現在のアプリのバージョンを出力

let current: String! = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let build: String! = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as String
print("current version is \(Float(current)!)")
print("current build is \(Float(build)!)")

Swift4

Swift4では以下のコード

let version: String! = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let build: String! = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String

 

バージョンを比較してアップロードを促す

let latest = 2.111111 //本来はどこかのDBかサーバから最新バージョン情報を取得すべき
override func viewDidLoad() {
        super.viewDidLoad()
        let current: String! =         NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
        let build: String! =         NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as String
        print("current version is \(Float(current)!)")
        print("current build is \(Float(build)!)")
        if(latest>Float(current)){
                _showDialog()
        }
}

func _showDialog(){
        let title = "新しいバージョン"
        let message = "新しいバージョンがリリースされています、アップロードをお願いします。"
        
        let alert = UIAlertController(title:title,
                                      message: message,
                                      preferredStyle: UIAlertControllerStyle.Alert)
        
        
        let OKAction:UIAlertAction = UIAlertAction(title: "OK",
                                                   style: UIAlertActionStyle.Default,
                                                   handler:{
                                                    (action:UIAlertAction!) -> Void in
                                                    self._openItuneStore()
        })
        alert.addAction(OKAction)
        self.presentViewController(alert, animated: true, completion: nil)
    }
    
    func _openItuneStore(){
        let itunesURL:String = "itms-apps://itunes.apple.com/app/xxxxxxx" //xxxxxxはアプリID
        let url = NSURL(string:itunesURL)
        let app:UIApplication = UIApplication.sharedApplication()
        app.openURL(url!)
    }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です