【iOS 開發(fā)】利用 iTunes 接口檢查 App 版本更新

Xcode

iOS 想要檢查 App 當(dāng)前版本是否為最新,一般的方案大概都是服務(wù)器自己提供一個接口來獲取 App 最新版本是多少肉渴,然后再做出相應(yīng)提示是否需要更新阐污,但是接口需要手動維護(hù)溺忧,應(yīng)用要審核融欧,還得等審核通過以后才能更新版本號敏弃,其實(shí)蘋果提供了一個 iTunes 接口,能夠查到 AppAppStore 上的狀態(tài)信息噪馏,既省事又準(zhǔn)確权她,下面記錄一下具體實(shí)現(xiàn)方法虹茶。


接口信息

  • 這是 iTunes 接口地址 ,有興趣可以看一下隅要,我們要用到的接口如下,xxx 處換成自己 AppAppId 董济,AppId 可以在 iTunes Connect 里面看到步清。
http://itunes.apple.com/lookup?id=xxx
  • 接口返回的內(nèi)容有很多,我就挑一些有用的截出來了虏肾。
{
    "resultCount" : 1,
    "results" : [{
        "artistId" : "開發(fā)者 ID",
        "artistName" : "開發(fā)者名稱",
        "trackCensoredName" : "審查名稱",
        "trackContentRating" : "評級",
        "trackId" : "應(yīng)用程序 ID",
        "trackName" = "應(yīng)用程序名稱",
        "trackViewUrl" = "應(yīng)用程序下載網(wǎng)址",
        "userRatingCount" = "用戶評論數(shù)量",
        "userRatingCountForCurrentVersion" = "當(dāng)前版本的用戶評論數(shù)量",
        "version" = "版本號"
    }]
}

實(shí)現(xiàn)方法

下面是檢查版本更新的具體實(shí)現(xiàn)方法廓啊,注意接口地址 xxx 處換成自己 AppAppIdApp 審核的時候版本肯定是比 AppStore 上高的封豪,所以不用擔(dān)心審核時會跳出更新提示谴轮。

/// 檢查版本更新
- (void)checkVersion {
    NSString *url = @"http://itunes.apple.com/lookup?id=xxx";
    [[AFHTTPSessionManager manager] POST:url parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
        DLog(@"版本更新檢查成功");
        NSArray *results = responseObject[@"results"];
        if (results && results.count > 0) {
            NSDictionary *response = results.firstObject;
            NSString *currentVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; // 軟件的當(dāng)前版本
            NSString *lastestVersion = response[@"version"]; // AppStore 上軟件的最新版本
            if (currentVersion && lastestVersion && ![self isLastestVersion:currentVersion compare:lastestVersion]) {
                // 給出提示是否前往 AppStore 更新
                UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"檢測到有版本更新,是否前往 AppStore 更新版本吹埠。" preferredStyle:UIAlertControllerStyleAlert];
                [alert addAction:[UIAlertAction actionWithTitle:@"前往" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
                    NSString *trackViewUrl = response[@"trackViewUrl"]; // AppStore 上軟件的地址
                    if (trackViewUrl) {
                        NSURL *appStoreURL = [NSURL URLWithString:trackViewUrl];
                        if ([[UIApplication sharedApplication] canOpenURL:appStoreURL]) {
                            [[UIApplication sharedApplication] openURL:appStoreURL];
                        }
                    }
                }]];
                [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
                [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
            }
        }
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        DLog(@"版本更新檢查失敗");
    }];
}
/// 判斷是否最新版本號(大于或等于為最新)
- (BOOL)isLastestVersion:(NSString *)currentVersion compare:(NSString *)lastestVersion {
    if (currentVersion && lastestVersion) {
        // 拆分成數(shù)組
        NSMutableArray *currentItems = [[currentVersion componentsSeparatedByString:@"."] mutableCopy];
        NSMutableArray *lastestItems = [[lastestVersion componentsSeparatedByString:@"."] mutableCopy];
        // 如果數(shù)量不一樣補(bǔ)0
        NSInteger currentCount = currentItems.count;
        NSInteger lastestCount = lastestItems.count;
        if (currentCount != lastestCount) {
            NSInteger count = labs(currentCount - lastestCount); // 取絕對值
            for (int i = 0; i < count; ++i) {
                if (currentCount > lastestCount) {
                    [lastestItems addObject:@"0"];
                } else {
                    [currentItems addObject:@"0"];
                }
            }
        }
        // 依次比較
        BOOL isLastest = YES;
        for (int i = 0; i < currentItems.count; ++i) {
            NSString *currentItem = currentItems[i];
            NSString *lastestItem = lastestItems[i];
            if (currentItem.integerValue != lastestItem.integerValue) {
                isLastest = currentItem.integerValue > lastestItem.integerValue;
                break;
            }
        }
        return isLastest;
    }
    return NO;
}

將來的你第步,一定會感激現(xiàn)在拼命的自己,愿自己與讀者的開發(fā)之路無限美好缘琅。

我的傳送門: 博客 粘都、簡書微博 刷袍、GitHub 翩隧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市呻纹,隨后出現(xiàn)的幾起案子堆生,更是在濱河造成了極大的恐慌,老刑警劉巖雷酪,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淑仆,死亡現(xiàn)場離奇詭異,居然都是意外死亡太闺,警方通過查閱死者的電腦和手機(jī)糯景,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來省骂,“玉大人蟀淮,你說我怎么就攤上這事〕模” “怎么了怠惶?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長轧粟。 經(jīng)常有香客問我策治,道長脓魏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任通惫,我火速辦了婚禮茂翔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘履腋。我一直安慰自己珊燎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布遵湖。 她就那樣靜靜地躺著悔政,像睡著了一般。 火紅的嫁衣襯著肌膚如雪延旧。 梳的紋絲不亂的頭發(fā)上谋国,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音迁沫,去河邊找鬼芦瘾。 笑死,一個胖子當(dāng)著我的面吹牛弯洗,可吹牛的內(nèi)容都是我干的旅急。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼牡整,長吁一口氣:“原來是場噩夢啊……” “哼藐吮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逃贝,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谣辞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沐扳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泥从,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年沪摄,在試婚紗的時候發(fā)現(xiàn)自己被綠了躯嫉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡杨拐,死狀恐怖祈餐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哄陶,我是刑警寧澤帆阳,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站屋吨,受9級特大地震影響蜒谤,放射性物質(zhì)發(fā)生泄漏山宾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一鳍徽、第九天 我趴在偏房一處隱蔽的房頂上張望资锰。 院中可真熱鬧,春花似錦阶祭、人聲如沸台妆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至切厘,卻和暖如春萨咳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疫稿。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工培他, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遗座。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓舀凛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親途蒋。 傳聞我的和親對象是個殘疾皇子猛遍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容