獲取App Store中版本號(hào),有更新則提示彈窗

如題, 今天我來給大家介紹:

一, 如何從App Store獲取自己APP的版本號(hào);

二, 如何判斷本地版本與App Store上的版本大小;

三, 如何在項(xiàng)目中進(jìn)行彈窗顯示;

現(xiàn)在開始講解:

一, 如何從App Store獲取自己APP的版本號(hào):

1. 獲取本地版本號(hào):

NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

NSString *version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];

2, 獲取App Store上版本號(hào):

/* -----------? id為App Store內(nèi)app的id? -----------*/

2.1, 如何獲取自己app的id:

去App Store搜索自己的app --> 復(fù)制鏈接 -->隨便找塊地粘貼鏈接, 上面有id值 -->copy出來即可

2.2, App Store上的鏈接地址都是 http://itunes.apple.com/cn/lookup?id=%@

#pragma mark - 獲取是否是最新版本

+(void)getVersonForAppCompate:(void (^)(BOOL isSuccess,NSString *version,BOOL isNew))compate{

NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

NSString *version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];

/* -----------? id為App Store內(nèi)app的id? -----------*/

[YLDAFNManager POST:@"http://itunes.apple.com/cn/lookup?id=1125234448" withToken:nil parameters:nil success:^(id? _Nullable responseObject) {

NSData *data = (NSData *)responseObject;

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers? error:nil];

NSArray *array = dic[@"results"];

if (array.count > 0) {

NSDictionary *dict = [array lastObject];

NSString *ver = dict[@"version"];

/* ----------- 下面要介紹的對比方法? -----------*/

BOOL isLarge = [NSString checkVersionForAppstoreVer:ver andInfoVersion:version];

compate(YES,ver,isLarge);

NSLog(@"當(dāng)前本地版本為:%@, App Store版本:%@,是否有更新:%zd", version,ver,isLarge);

}else{

compate(NO,version,NO);

}

} failure:^(NSError * _Nonnull error) {

compate(NO,version,NO);

NSLog(@"error == %@",error);

}];

}

二, 如何判斷本地版本與App Store上的版本大小;

如下: 我只復(fù)制提供有兩個(gè)小數(shù)點(diǎn)的版本判斷, 取出了第一段,第二段,第三段數(shù)字進(jìn)行判斷大小; 每一段不限制長度;

如果,你的版本有三個(gè)及以上的小數(shù)點(diǎn): 則你需要NSRange截取的時(shí)候options:NSBackwardsSearch 這里可以選擇查找的起始地點(diǎn): 這里我不做詳細(xì)解說了, 自己去查找NSRange的截取方法, 截出你想要的結(jié)果

#pragma mark - 判斷版本是否最新 前者Appstore版本? 后者本地版本 注:僅支持(兩個(gè)點(diǎn)號(hào)的版本字符串) xxxx.xxxx.xxx

+(BOOL)checkVersionForAppstoreVer:(NSString *)appstoreVer andInfoVersion:(NSString *)infoVersion{

NSRange range = [appstoreVer rangeOfString:@"."]; //第一個(gè)點(diǎn)的位置

NSRange lastRange = [appstoreVer rangeOfString:@"." options:NSBackwardsSearch]; //第二個(gè)點(diǎn)的位置

NSInteger firstAppNum = [[appstoreVer substringWithRange:NSMakeRange(0, range.location)] integerValue]; //第一段數(shù)字

NSInteger secAppNum = [[appstoreVer substringWithRange:NSMakeRange(range.location + 1, lastRange.location - range.location - 1)] integerValue]; //第二段數(shù)字

NSInteger thirdAppNum = [[appstoreVer substringWithRange:NSMakeRange(lastRange.location + 1, appstoreVer.length - lastRange.location - 1)] integerValue]; //第三段數(shù)字

NSRange rangeInfo = [infoVersion rangeOfString:@"."];

NSRange lastRangeInfo = [infoVersion rangeOfString:@"." options:NSBackwardsSearch];

NSInteger firstInfoNum = [[infoVersion substringWithRange:NSMakeRange(0, rangeInfo.location)] integerValue];

NSInteger secInfoNum = [[infoVersion substringWithRange:NSMakeRange(rangeInfo.location + 1, lastRangeInfo.location - rangeInfo.location - 1)] integerValue];

NSInteger thirdInfoNum = [[infoVersion substringWithRange:NSMakeRange(lastRangeInfo.location + 1, infoVersion.length - lastRangeInfo.location - 1)] integerValue];

NSLog(@"first = %zd,sec = %zd, last = %zd",firstAppNum,secAppNum,thirdAppNum);


三, 如何在項(xiàng)目中進(jìn)行彈窗顯示:

直接上代碼了: 在appdelegate的方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中添加如下:

__weak __typeof(self)weakSelf = self;

[YLDLoginManager getVersonForAppCompate:^(BOOL isSuccess,NSString *version, BOOL isNew) {

if (isSuccess) {

if (isNew) {

weakSelf.isNew = YES;

[[[UIAlertView alloc] initWithTitle:@"新版本更新"

message:[NSString stringWithFormat:@"新版本%@已發(fā)布, 請進(jìn)行更新",version]

delegate:self

cancelButtonTitle:@"取消"

otherButtonTitles:@"確定", nil] show];}}}];

另外調(diào)用代理方法:

#pragma mark - UIAlertViewDelegate

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

switch (buttonIndex) {

case 0:{ //取消

}break;

case 1:{? ? //確定跳轉(zhuǎn)App store

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"此處的url就是App Store上app復(fù)制鏈接的地址"]];

}break;

default:

break;

}}

注: 這里之所以需要認(rèn)真判斷新版本要比低版本大, 而不是僅僅根據(jù)兩個(gè)版本字符串不同就提示版本有更新的原因:

1.0, 蘋果官方審核時(shí), 如果APP直接有彈窗提示需要下載, 不管你要跳轉(zhuǎn)到哪里; 都會(huì)審核被拒;

2.0, 判斷大小的方式來做, 在審核的時(shí)候, 蘋果審核的APP是最新的, 版本號(hào)比App Store里的版本高, 那么就不會(huì)提示有彈窗; 但只要APP通過審核上了App Store, 以前老用戶的版本都比App Store里的版本低, 就會(huì)出現(xiàn)彈窗;


if (firstAppNum > firstInfoNum) { //第一個(gè)數(shù)

return YES;

}else if(firstAppNum == firstInfoNum){

if (secAppNum > secInfoNum) { //第二個(gè)數(shù)

return YES;

}else if(secAppNum == secInfoNum){

if (thirdAppNum > thirdInfoNum) { //第三個(gè)數(shù)

return YES;

}else{

return NO;

}

}else{

return NO;

}

}else{

return NO;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末民晒,一起剝皮案震驚了整個(gè)濱河市精居,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潜必,老刑警劉巖靴姿,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異磁滚,居然都是意外死亡佛吓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門垂攘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來维雇,“玉大人,你說我怎么就攤上這事晒他≈ㄐ停” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵陨仅,是天一觀的道長津滞。 經(jīng)常有香客問我,道長灼伤,這世上最難降的妖魔是什么触徐? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮狐赡,結(jié)果婚禮上撞鹉,老公的妹妹穿的比我還像新娘。我一直安慰自己猾警,他們只是感情好孔祸,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著发皿,像睡著了一般崔慧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上穴墅,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天惶室,我揣著相機(jī)與錄音,去河邊找鬼玄货。 笑死皇钞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的松捉。 我是一名探鬼主播夹界,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼隘世!你這毒婦竟也來了可柿?” 一聲冷哼從身側(cè)響起鸠踪,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎复斥,沒想到半個(gè)月后营密,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡目锭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年评汰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痢虹。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡被去,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出世分,到底是詐尸還是另有隱情编振,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布臭埋,位于F島的核電站踪央,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瓢阴。R本人自食惡果不足惜畅蹂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荣恐。 院中可真熱鬧液斜,春花似錦、人聲如沸叠穆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硼被。三九已至示损,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嚷硫,已是汗流浹背检访。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仔掸,地道東北人脆贵。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像起暮,于是被迫代替她去往敵國和親卖氨。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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