Skip to main content

Check Application version | iOS | Swift

Show the alert within application for update the application.

func checkApplicationVersion(){
        let urlString = String(format: "http://itunes.apple.com/lookup?id=%@",AppleAppID)
        let url = NSURL(string: urlString)
        let urlRequest = NSURLRequest(URL: url!)
        NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue()) { (response, data, error) -> Void in
            if (error == nil)
            {
                do {
                    let appMetadataDictionary : NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
                    let resultsArray : NSArray = appMetadataDictionary.objectForKey("results") as! NSArray
                    let resultsDic : NSDictionary = resultsArray.firstObject as! NSDictionary

                    let iTunesVersion : String = resultsDic.objectForKey("version") as! String
                    let appVersionString : String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
                    
                    if(appVersionString.compare(iTunesVersion) != NSComparisonResult.OrderedSame// new version exists
                    {
                        let message = String(format:"New version %@ available. Update required.",iTunesVersion)
                        let alert = UIAlertController(title: KEY_AppAlertTitle, message: message, preferredStyle: UIAlertControllerStyle.Alert)
                        alert.addAction(UIAlertAction(title: "Update", style: .Default, handler: { (action) -> Void in
                            let iTunesLink : String = String(format:"itms://itunes.apple.com/us/app/apple-store/id%@?mt=8",AppleAppID)
                            UIApplication.sharedApplication().openURL(NSURL(string: iTunesLink)!)
                        }))
                        alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
                        self.window?.rootViewController?.presentViewController(alert, animated: true, completion: nil)
                    }
                } catch let error as NSError {
                    print("error while lookup:- \(error)")
                }
            }else{
                    print("error occurred communicating with iTunes:- \(error)")
            }
        }

    }

Comments

Popular posts from this blog

How to kill/exit iOS application on a button click programmatically

I had been practising below code to kill an iOS application. exit(0); But last week, my application was rejected by app store due to following reason: We found that your app includes a UI control for quitting the app. This is not in compliance with the iOS Human Interface Guidelines, as required by the App Store Review Guidelines . To avoid any such rebuff, suspend the application using following code snippet. UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) Good news is that now my application is passed the  iOS Human Interface Guidelines and live on app store.

Return multiple values from a function in objective C

We can return tuples in swift as follows:- func getData () -> ( Int , Int , Int ) { //...code here return ( hour , minute , second ) } You can't do that in objective-c. Best option is using parameters by reference . Something like this. - ( void ) getHour :( int *) hour minute :( int *) minute second :( int *) second { * hour = 1 ; * minute = 2 ; * second = 3 ; } And use it like this. int a , b , c ; [ self getHour :& a minute :& b second :& c ]; NSLog (@ "%i, %i, %i" , a , b , c );