2011-09-11 15 views

Respuesta

14

Usted necesita tener un servicio web en el servidor (o algo similar) que sus solicitudes de aplicaciones en el inicio, para saber cual es la última versión disponible. (Si aún no tiene un WS y realmente no desea implementar uno para eso, también puede simplemente usar un archivo XML o de texto que contenga la versión)

Luego compare esta versión recuperada de su servidor con la versión actual de la aplicación, usando [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"].

Si son diferentes, se puede visualizar el alertview y redirigir a itms-apps://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftwareUpdate?id=[APPID]&mt=8 (reemplazando APPID con su iTunes Connect ID de la aplicación), que es el enlace que hará que su iPhone abrir la aplicación AppStore directamente en la página de actualización de la aplicación

+2

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

+5

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

-2

Un amigo acaba de lanzar un servicio, CleverStork, que hace más o menos exactamente lo que quiere.

No lo he usado, pero tengo entendido que solicita a los usuarios, a través de alertas en la aplicación, descargar nuevas versiones de su aplicación. Ofrecen planes gratuitos y pagos.

+0

El enlace del producto que ha dado está muerto. – shrishaster

12

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"); 
          } 
         }]; 
+0

Pero de acuerdo con las pautas de revisión de la tienda-tienda "Las aplicaciones que eliminan cualquier información de los sitios de Apple (por ejemplo, de apple.com, iTunes Store, App Store, iTunes Connect, Programas de desarrolladores de Apple, etc.) o crear rankings utilizando el contenido de los sitios de Apple y los servicios serán rechazados " –

+0

¿Funcionará desde la aplicación? –

+0

El uso del servicio web iTMS no es lo que yo llamaría" desguace "(que generalmente significa" extraer datos de un contenido no diseñado para analizar "como extraer información de una página web en HTML." Este es un servicio web y, por definición, se ha creado para permitir que los desarrolladores obtengan y analicen esa información (y está documentada y todo), siempre y cuando no Para abusar de él. Si solo lo usa para consultar información sobre su propia aplicación y no sobre otras, parece difícil calificarla como uso excesivo del servicio. – AliSoftware

Cuestiones relacionadas