IOS APP彈框檢查更新 避免審核被拒__IOS

來源:互聯網
上載者:User

一.前言

1.第一次寫部落格,可以說網上資源的總結一下,雷同多有擔待。

2.隨著15年3月起app上架AppStore官方審核不允許提示更新升級的字樣。可規則是死的 ,人是活的 。還是有空可鑽的。

二.提示版本更新的兩種方式

提示更新大致無非有兩種:

1.在設定裡有“檢查更新”處,檢查版本,不做重點介紹 (PS:安卓截圖,IOS暫時不要想了;不過也可以讓後台控制,審查期間讓後台隱藏掉,審核通過後再顯示。不過當升級版本的時候也不大好控制。綜合考慮:還是不要這個了吧 .....AppStore有現成的提示更新就行了。)


2.啟動APP的時候已彈窗的形式提示更新 (重點介紹)


三.實現方法邏輯機制及原代碼

1.實現思路:a.取自身版本號碼;b.取AppStore版本號碼;c.版本號碼的比較 d.彈框的顯示 e.跳轉AppStore更新

2.代碼實現

a.取自身版本號碼,Xcode 的Version (這個版本號碼就是1.0.3)

 

 //擷取APP自身版本號碼    NSString *localVersion = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"];

b.取AppStore版本號碼

1.首先得擷取App的AppID  (紅色箭頭所指。PS:塗鴉感)


//定義的App地址NSString *url = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",AppID];//AppID即是如圖紅色箭頭擷取的AppID//PS:有的時候可能會請求不到資料,但是AppID對了,有可能是App是上架地區範圍的原因,建議使用在com末尾加上“/cn” //例:NSString *url = [NSString stringWithFormat:@"http://itunes.apple.com/cn/lookup?id=%@",AppID];//網路請求App的資訊(我們取Version就夠了) NSURL *url = [NSURL URLWithString:url];    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url                                                           cachePolicy:NSURLRequestReloadIgnoringCacheData                                                       timeoutInterval:10];        [request setHTTPMethod:@"POST"];        NSURLSession *session = [NSURLSession sharedSession];    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {        NSMutableDictionary *receiveStatusDic=[[NSMutableDictionary alloc]init];        if (data) {                        //data是有關於App所有的資訊            NSDictionary *receiveDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];            if ([[receiveDic valueForKey:@"resultCount"] intValue]>0) {                                [receiveStatusDic setValue:@"1" forKey:@"status"];                [receiveStatusDic setValue:[[[receiveDic valueForKey:@"results"] objectAtIndex:0] valueForKey:@"version"]   forKey:@"version"];                                //請求的有資料,進行版本比較                [self performSelectorOnMainThread:@selector(receiveData:) withObject:receiveStatusDic waitUntilDone:NO];            }else{                                [receiveStatusDic setValue:@"-1" forKey:@"status"];            }        }else{            [receiveStatusDic setValue:@"-1" forKey:@"status"];        }            }];        [task resume];    

c

1.彈窗比較

-(void)receiveData:(id)sender{    //擷取APP自身版本號碼    NSString *localVersion = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"];        NSArray *localArray = [localVersion componentsSeparatedByString:@"."];    NSArray *versionArray = [sender[@"version"] componentsSeparatedByString:@"."];            if ((versionArray.count == 3) && (localArray.count == versionArray.count)) {                if ([localArray[0] intValue] <  [versionArray[0] intValue]) {            [self updateVersion];        }else if ([localArray[0] intValue]  ==  [versionArray[0] intValue]){            if ([localArray[1] intValue] <  [versionArray[1] intValue]) {                [self updateVersion];            }else if ([localArray[1] intValue] ==  [versionArray[1] intValue]){                if ([localArray[2] intValue] <  [versionArray[2] intValue]) {                   [self updateVersion];                }            }        }    }}


d,e升級提示及跳轉

-(void)updateVersion{    NSString *msg = [NSString stringWithFormat:@"又出新版本啦,快點更新吧!"];        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"升級提示" message:msg preferredStyle:UIAlertControllerStyleAlert];        // Create the actions.    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"下次再說" style:UIAlertActionStyleCancel handler:nil];    UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"現在升級"style:UIAlertActionStyleDestructive handler:^(UIAlertAction*action) {        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:kBuyerAppUpdateUrl]];        [[UIApplication sharedApplication]openURL:url];    }];        // Add the actions.    [alertController addAction:cancelAction];    [alertController addAction:otherAction];        [self.window.rootViewController presentViewController:alertController animated:YES completion:nil];}


 

四.結語

 至此,關於彈窗提示升級就結束了 。PS:這裡比較版本號碼不是不一樣就提示更新升級。而是目前的版本號如果比AppStore版備號小的時候提示彈框升級。這樣做的最大好處就是蘋果在審核App時不會出現提示升級。當然如果你的版本號碼比AppStore設定小了(不可能),那你就。。。。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.