Para comprobar para ver si tiene la versión más reciente acaba de consulta iTunes para datos de aplicaciones utilizando la siguiente consulta (nota: cambiar el id para que coincida con tu ID de aplicación desde iTunesConnect):
Esto devuelve un diccionario JSON que es muy fácil de convertir a un NSDictionary para usarlo directamente dentro de su código, entonces todo lo que necesita hacer es sacar el valor de la clave "versión" y compararla con el número de versión de su aplicación (ver clave/valor de la versión) en negrita a continuación):
{
"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
}
]
}
Aquí hay algunos códigos para realizar esta tarea. -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");
}
}];
Una mejora de esto sería enviar una solicitud de notificación de usuario a su servidor. Esta solicitud incluiría el tipo de dispositivo, la versión de la aplicación, la versión de iOS y otra información de diagnóstico. Entonces su servidor podría decidir, en función de esa información, qué mensaje enviar a la aplicación. Por ejemplo, si encuentra un error importante que solo afecta a ciertos dispositivos, puede informar a los usuarios afectados que ha enviado una corrección de errores a Apple. – Jim
Tenga en cuenta que desde esta respuesta, Apple lanzó la [API de búsqueda de iTunes] (http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html), para que pueda llamar a 'http://itunes.apple.com/lookup?id=' para obtener un JSON que contenga algunos metadatos sobre su aplicación, incluida su versión en la tienda. Puede compararlo con la versión en su Info.plist ('CFBundleVersion') y activar una alerta cuando son diferentes. Incluso puede usar 'SKStoreProductViewController' para presentar la página de su aplicación en la AppStore integrada directamente en su aplicación. –
AliSoftware