Как проверить версию приложения и попросить пользователей обновить? - PullRequest
6 голосов
/ 11 сентября 2011

Как я могу проверить, есть ли у пользователя текущая версия моего приложения, а также всплыть сообщение с просьбой обновить версию приложения?

Что-то похожее на то, что вы увидите ниже.

enter image description here

Ответы [ 3 ]

14 голосов
/ 11 сентября 2011

Вам необходимо иметь на своем сервере WebService (или что-то похожее), которое ваше приложение запрашивает при запуске, чтобы знать, какая последняя версия доступна.(Если у вас еще нет WS и вы действительно не хотите его реализовывать, вы также можете просто использовать XML или текстовый файл, который также содержит версию)

Затем сравните эту версию, полученную изваш сервер с текущей версией приложения, используя [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"].

Если они различаются, вы можете отобразить представление оповещений и перенаправить на itms-apps://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftwareUpdate?id=[APPID]&mt=8 (заменив APPID на iTunes Connect App.Идентификатор ) - ссылка, которая заставит ваш iPhone открыть приложение AppStore прямо на странице обновления вашего приложения

12 голосов
/ 14 марта 2013

Чтобы проверить, установлена ​​ли у вас последняя версия, просто запросите в iTunes данные приложения, используя следующий запрос (примечание: измените идентификатор в соответствии с идентификатором вашего приложения из iTunesConnect):

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");
                           }
                       }];
0 голосов
/ 13 июня 2012

Мой друг только что запустил сервис, CleverStork , который делает в точности то, что вы хотите.

Я не использовал его сам, но, насколько я понимаю, он побуждает пользователей - через оповещения в приложении - загружать новые версии вашего приложения. Они предлагают бесплатные и платные планы.

...