【iOS開發(fā)細(xì)節(jié)】之- 如何讓我們的App加入強制更新

每篇文章我都有個寫在前面的話

在我們平時開發(fā)中单默,公司總是有需求要我們的蘋果App可以像安卓的一樣加入強制更新瑰抵,但是由于蘋果的審核時神圣不可侵犯的肛炮,只要你的項目中讓我看到有強制更新的頁面或者提示框或者小到一個提示更新的按鈕蟀淮,那不好意思,直接不給你通過審核超凳,直接Pass愈污,沒的商量!轮傍!所以這成為我們提交項目中一個非常值得注意的問題钙畔。但是公司老大的命令我們也是不能不辦的,兩面夾擊金麸,為難的永遠(yuǎn)是我們!

針對這種無理的要求簿盅,我開動了我的大腦挥下,做一次我和蘋果審核員的對賭游戲

廢話不多說,直接上代碼

+ (void)getNewVersion
{
    
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://itunes.apple.com/cn/lookup?id=1036152564"]];
    
    NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        // 請求的數(shù)據(jù)轉(zhuǎn)字典桨醋,必須判斷數(shù)據(jù)有值才走里面棚瘟,不然空的data會出現(xiàn)crash
        if (data.length > 0) {
            NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            
            NSString *newVersion = [result[@"results"] firstObject][@"version"];
            NSString *message = [result[@"results"] firstObject][@"releaseNotes"];
            NSString *trackViewUrl = [result[@"results"] firstObject][@"trackViewUrl"];
            
            //屏蔽蘋果審核員看到此更新提示口(此版本每次提交前更新成目前線上版本號)
            if ([newVersion isEqualToString:@"2.5.0"])   return;
            
            // 獲得當(dāng)前打開軟件的版本號
            NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"];
            
            // 針對新下載用戶如果是第一次下載 不會走里面代碼。如果是老用戶就會走里面代碼
            if (![newVersion isEqualToString:currentVersion]) {
                
                UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"有新版本啦" message:message preferredStyle:UIAlertControllerStyleAlert];
                
                [alertVC addAction:[UIAlertAction actionWithTitle:@"馬上嘗鮮"
                                                            style:UIAlertActionStyleDefault
                                                          handler:^(UIAlertAction * _Nonnull action) {
                                                              
                                                              [[UIApplication sharedApplication]
                                                               openURL:[NSURL URLWithString:trackViewUrl]];
                                                              
                                                          }]];
                
                UIViewController *mainVc = [UIApplication sharedApplication].keyWindow.rootViewController;
                if (mainVc.presentedViewController) {
                    mainVc = mainVc.presentedViewController;
                }
                [mainVc presentViewController:alertVC animated:YES completion:nil];
            }
        }
        
        
    }];
    [task resume];
}

這是我把強制更新做成一個繼承NSObject工具類里面的代碼喜最,我的類是這樣寫的

強制更新.png
強制更新.png
  • 下面是調(diào)用方法(當(dāng)然你一定要包含頭文件)


    強制更新調(diào)用.png

里面的請求方法偎蘸,我已經(jīng)改成了現(xiàn)在蘋果推薦的HTTPS安全請求方式,可以直接拖到項目里面用!

  • 我和蘋果審核員對賭的游戲其實就一句話
    屏蔽蘋果審核員看到此更新提示口(此版本號必須每次提交前更新成目前線上已上線版本號)
    if ([newVersion isEqualToString:@"2.5.0"]) return;

在上線之前一定要將此處的版本號改成你現(xiàn)在已經(jīng)上線的版本號迷雪,我對賭的理由是限书,蘋果審核員在審核我們的App的時候,他的手機或者pad上絕對沒有安裝我們之前的App章咧,如果安裝了的話倦西,那他就會跟我們用戶一樣,會彈出更新提示框赁严,這樣我們的應(yīng)用鐵定是通過不了的扰柠,如果沒安裝,那他請求下來的version一定是跟我這里寫死的是一樣的疼约,所以就會return掉卤档,不會走后面的代碼,事實證明程剥,我贏了劝枣!但是這也不是絕對的,如果真有一天審核員心情好倡缠,一直留著你的App哨免,那你就中獎了!

  • 當(dāng)然還有福利給你們昙沦,我Demo代碼已經(jīng)上傳到Github 點擊下載

如果覺得我的文章對你有用琢唾,請關(guān)注我,共同進步盾饮,謝謝采桃!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市丘损,隨后出現(xiàn)的幾起案子普办,更是在濱河造成了極大的恐慌,老刑警劉巖徘钥,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衔蹲,死亡現(xiàn)場離奇詭異,居然都是意外死亡呈础,警方通過查閱死者的電腦和手機舆驶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來而钞,“玉大人沙廉,你說我怎么就攤上這事【式冢” “怎么了撬陵?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵珊皿,是天一觀的道長。 經(jīng)常有香客問我巨税,道長蟋定,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任垢夹,我火速辦了婚禮溢吻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘果元。我一直安慰自己促王,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布而晒。 她就那樣靜靜地躺著蝇狼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倡怎。 梳的紋絲不亂的頭發(fā)上迅耘,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音监署,去河邊找鬼颤专。 笑死,一個胖子當(dāng)著我的面吹牛钠乏,可吹牛的內(nèi)容都是我干的栖秕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晓避,長吁一口氣:“原來是場噩夢啊……” “哼簇捍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俏拱,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暑塑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锅必,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體事格,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年搞隐,在試婚紗的時候發(fā)現(xiàn)自己被綠了驹愚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡尔许,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出终娃,到底是詐尸還是另有隱情味廊,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站余佛,受9級特大地震影響柠新,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辉巡,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一恨憎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧郊楣,春花似錦憔恳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至今瀑,卻和暖如春程梦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背橘荠。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工屿附, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哥童。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓挺份,卻偏偏與公主長得像,于是被迫代替她去往敵國和親如蚜。 傳聞我的和親對象是個殘疾皇子压恒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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