如何检查应用程序版本并请求用户更新?

时间:2011-09-11 14:41:46

标签: objective-c ios version uialertview

如何检查用户是否拥有我应用的当前版本,还会弹出一条消息,要求他们更新应用版本?

你会在下面看到的东西。

enter image description here

3 个答案:

答案 0 :(得分:14)

您的应用程序在启动时请求服务器上的WebService(或类似内容),以了解哪个是最新版本。 (如果你还没有WS并且真的不想为它实现一个,你也可以简单地使用包含该版本的XML或文本文件)

然后使用[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]将从服务器检索到的此版本与应用程序的当前版本进行比较。

如果它们不同,您可以显示提醒视图并重定向到itms-apps://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftwareUpdate?id=[APPID]&mt=8(用您的 iTunes Connect App ID替换APPID ),这将是一个链接您的iPhone直接在应用程序的更新页面上打开AppStore应用程序

答案 1 :(得分:12)

要查看您是否拥有最新版本,只需使用以下查询在iTunes中查询应用数据(注意:更改ID以匹配iTunesConnect中应用的ID):

http://itunes.apple.com/lookup?id=520604518

这将返回一个JSON字典,它非常容易转换为NSDictionary以直接在您的代码中使用,然后您需要做的就是提取“version”键的值并将其与您的应用程序版本号进行比较(看下面的版本键/值加粗):

{
    "resultCount": 1,
    "results": [
        {
            "kind": "software",
            "features": [],
            "supportedDevices": [
                "all"
            ],
            "isGameCenterEnabled": false,
            "artistViewUrl": "https://itunes.apple.com/us/artist/d-m-holdings/id388608883?uo=4",
            "artworkUrl60": "http://a899.phobos.apple.com/us/r1000/086/Purple/v4/6d/b3/05/6db305aa-c685-558b-8c8e-8b7245375ce1/IconAudio.png",
            "screenshotUrls": [
                "http://a86.phobos.apple.com/us/r1000/078/Purple/v4/8f/ff/47/8fff4783-f2e4-fe3f-ef92-96d67d66c12b/mzl.dwbdvxny.png",
                "http://a731.phobos.apple.com/us/r1000/097/Purple/v4/cb/65/f6/cb65f613-408a-dffe-fb36-165db0c1a360/mzl.jexyhdnq.png",
                "http://a940.phobos.apple.com/us/r1000/097/Purple/v4/f6/26/a1/f626a18c-691f-7345-8d3d-f19713144818/mzl.llsgsagl.png",
                "http://a185.phobos.apple.com/us/r1000/071/Purple/v4/7d/5e/bc/7d5ebcad-7755-e772-727c-65de99effd60/mzl.zuyvhebk.png",
                "http://a48.phobos.apple.com/us/r1000/096/Purple/v4/d6/f5/f1/d6f5f108-10ab-3738-26cf-5ce82c6bb690/mzl.ijtyynie.png"
            ],
            "ipadScreenshotUrls": [],
            "artworkUrl512": "http://a672.phobos.apple.com/us/r1000/100/Purple/v4/e3/cb/5d/e3cb5d2d-f1a8-8b80-3a91-58be8f654710/mzm.uogqezwx.png",
            "artistId": 388608883,
            "artistName": "D&M Holdings",
            "price": 0,
            **"version": "1.0.5",**
            "description": "Designed to enhance the listening experience with Denon’s new line of Music Maniac™ headphones, the Denon Audio app is designed for the on-the-go audiophile. The Denon Audio app features a premium audio player that lets you experience the best possible sound quality from your iPod music library and favorite Internet radio stations. Create & save custom EQ curves, create & save instant playlists, enjoy internet radio stations via the built-in TuneIn service, and more. The Denon Audio app will quickly replace all of your other music apps.\n \nThe Denon Audio app features a customizable graphical equalizer that lets you contour your own sound by directly manipulating more than 1000 discrete bands of equalization without adding spatial distortion or decreasing sound quality. Pump up the bass, restore those highs, and start jammin’! \n \nEQ FEATURES:\n \n• Graphical equalizer for your iPod music library and streaming Internet Radio\n• 1000 possible discrete bands\n• 10 built in EQ Presets\n• Create and save your own EQ Presets\n• Bypass mode to quickly compare the original and equalized audio\n• Real-time spectrum analyzer\n• Linear phase design\n• No spatial distortion\n\nIPOD MUSIC LIBRARY FEATURES:\n\n• Enhances your listening experience with Denon Music Maniac Headphones or other audio playback devices such as docking stations, a/v receivers, car stereos via USB, Bluetooth, or Airplay.\n• Powerful queue based playback system lets you build and order your own playlist on the fly.\n• Save the playback queue as a new playlist\n• A single song, all songs on an album, all songs by an artist, and all songs in a genre can easily be added to the now playing queue.\n• Supports both portrait and landscape modes for browsing, playing, and equalizing\n• Shuffle and repeat playback modes\n• iPod library browsing by Playlist, Artist, Album, Song, Genre, Composer, Compilation, and Podcast (no importing needed)\n\nINTERNET RADIO FEATURES:\n\n• The TuneIn service provides global access to Internet radio – covering over 70,000 radio stations and 2 million on-demand programs including sports, news, talk, music and comedy. \n• Browse Internet radio stations by location, genre, language or Podcast (on-demand programs).\n• Powerful search feature for your iPod music library and Internet Radio \n• Save your favorite Internet Radio stations or programs as convenient presets and share them with  other TuneIn compatible devices\n• Ability to choose high or low quality streams offered by broadcasters\n \nADDITIONAL FEATURES:\n\n• Streams music over AirPlay to any Denon AirPlay compatible receiver or HiFi product\n• Share what you’re listening to via Facebook, Twitter, Email, or Text Message (iMessage)\n\nNOTICES:\n \n• The Denon Audio app requires iOS 5 or later and works with the iPhone 3GS or newer, the iTouch 3rd generation or newer, and all iPads (in 2x mode). \n• DRM protected iTunes music is NOT supported by the Denon Audio app (or any 3rd party music app)\n• iTunes Match will be supported in a future update \n• WiFi or data connection required to stream Internet radio",
            "currency": "USD",
            "genres": [
                "Music",
                "Lifestyle"
            ],
            "genreIds": [
                "6011",
                "6012"
            ],
            "releaseDate": "2012-05-29T07:00:00Z",
            "sellerName": "D&M Holdings Inc.",
            "bundleId": "com.dm-holdings.denon-audio",
            "trackId": 520604518,
            "trackName": "Denon Audio",
            "primaryGenreName": "Music",
            "primaryGenreId": 6011,
            "releaseNotes": "• Added 4\" display support for the iPhone 5 and 5th generation iPod Touch\n\n• Added an audio limiter function to protect against possible distortion introduced from pushing the EQ too high\n\n• Displays the Shuffle, Repeat, AirPlay, and Share icons as well as the scan/scrub controls on the \"Now Playing\" screen by default (so everyone knows they are included in the app). Tap the cover art to hide/show these controls",
            "formattedPrice": "Free",
            "wrapperType": "software",
            "trackCensoredName": "Denon Audio",
            "trackViewUrl": "https://itunes.apple.com/us/app/denon-audio/id520604518?mt=8&uo=4",
            "contentAdvisoryRating": "4+",
            "artworkUrl100": "http://a672.phobos.apple.com/us/r1000/100/Purple/v4/e3/cb/5d/e3cb5d2d-f1a8-8b80-3a91-58be8f654710/mzm.uogqezwx.png",
            "languageCodesISO2A": [
                "ZH",
                "DE",
                "EN",
                "ES",
                "FR",
                "JA",
                "NL"
            ],
            "fileSizeBytes": "9060882",
            "sellerUrl": "http://www.usa.denon.com/headphones",
            "averageUserRatingForCurrentVersion": 4.5,
            "userRatingCountForCurrentVersion": 329,
            "trackContentRating": "4+",
            "averageUserRating": 4.5,
            "userRatingCount": 471
        }
    ]
}

以下是完成此任务的一些代码。 -rrh

NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",APPSTORE_ID]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

[NSURLConnection sendAsynchronousRequest:request
                                   queue:[NSOperationQueue mainQueue]
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                           if (!error) {
                               NSError* parseError;
                               NSDictionary *appMetadataDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&parseError];
                               NSArray *resultsArray = (appMetadataDictionary)?[appMetadataDictionary objectForKey:@"results"]:nil;
                               NSDictionary *resultsDic = [resultsArray firstObject];
                               if (resultsDic) {
                                   // compare version with your apps local version
                                   NSString *iTunesVersion = [resultsDic objectForKey:@"version"];

                                   NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)@"CFBundleShortVersionString"];
                                   if (iTunesVersion && [appVersion compare:iTunesVersion] != NSOrderedSame) { // new version exists
                                       // inform user new version exists, give option that links to the app store to update your app - see AliSoftware's answer for the app update link
                                       UIAlertView *alert = [UIAlertView bk_showAlertViewWithTitle:APP_NAME message:[NSString stringWithFormat:@"New version %@ available. Update required.",iTunesVersion] cancelButtonTitle:@"update" otherButtonTitles:nil handler:^(UIAlertView *alertView, NSInteger buttonIndex) {


                                        NSString *iTunesLink = [NSString stringWithFormat:@"itms://itunes.apple.com/us/app/apple-store/id%@?mt=8",APPSTORE_ID];
                                        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
                                       }];
                                       [alert show];
                                   }
                               }
                           } else {
                               // error occurred with http(s) request
                               NSLog(@"error occurred communicating with iTunes");
                           }
                       }];

答案 2 :(得分:-2)

我的一位朋友刚推出了一项服务CleverStork,它完全符合您的要求。

我自己没有使用它,但我的理解是,它会通过应用内警报提示用户下载应用的新版本。他们提供免费和付费的计划。