iOS程序自動(dòng)提示更新的實(shí)現(xiàn)方案大致分為兩種:
第一種,自己服務(wù)器提供一個(gè)接口互亮,告知相關(guān)app的當(dāng)前版本犁享,是否需要更新,以及更新的地址等信息 胳挎。
第二種饼疙,就是利用蘋(píng)果的appstore 提供的相關(guān)api進(jìn)行查詢(xún)更新。
由于此前沒(méi)有找到iOS程序更新的方法慕爬,就用了第一種方式窑眯,但后來(lái)發(fā)現(xiàn)了一些問(wèn)題,自己提供服務(wù)器医窿,需要維護(hù)磅甩,程序提交更新后,由于蘋(píng)果需要審核姥卢,中間會(huì)有時(shí)間差卷要,這個(gè)時(shí)間不好把握渣聚。后臺(tái)就找蘋(píng)果的相關(guān)文檔,終于找到了僧叉。
http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html
實(shí)現(xiàn)機(jī)制:
#define APP_URL @"http://itunes.apple.com/lookup?id=你程序的appId"
ASIFormDataRequest *formRequst = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:APP_URL]];
請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù),返回的大致數(shù)據(jù)如下奕枝,其他還有好多數(shù)據(jù),我們把關(guān)鍵的給截取出來(lái)
{
resultCount = 1;
results = (
{
artistId = 開(kāi)發(fā)者 ID;
artistName = 開(kāi)發(fā)者名稱(chēng);
price = 0;
isGameCenterEnabled = 0;
kind = software;
languageCodesISO2A = (
EN
);
trackCensoredName = 審查名稱(chēng);
trackContentRating = 評(píng)級(jí);
trackId = 應(yīng)用程序 ID;
trackName = 應(yīng)用程序名稱(chēng)";
trackViewUrl = 應(yīng)用程序介紹網(wǎng)址;
userRatingCount = 用戶(hù)評(píng)級(jí);
userRatingCountForCurrentVersion = 1;
version = 版本號(hào);
wrapperType = software;
}
);
}
取得這些數(shù)據(jù)后關(guān)鍵的信息就是“ version”最新版本號(hào)和“ trackViewUrl”程序地址瓶堕。然后與本地程序的版本比較即可隘道。
上面的build 對(duì)應(yīng)info.plist文件里的“Bundle version”字段,供程序調(diào)試用郎笆,即內(nèi)部調(diào)試版本號(hào)谭梗,不是顯示在appstore上面的
version 對(duì)應(yīng)info.plist文件里的“Bundle versions string, short”字段,這才是真正的版本號(hào)宛蚓,顯示在appstore上的激捏。由于之前學(xué)習(xí)的時(shí)候,上網(wǎng)查資料凄吏,有好多人老是把這兩個(gè)給弄混了远舅,我也糾結(jié)了一會(huì),特此說(shuō)明一下竞思,以備記憶表谊。
//獲取appstore最新的版本號(hào)
NSString *newVersion = [rightDic objectForKey:@"version"];
//獲取應(yīng)用程序的地址
NSString *newURL = [rightDic objectForKey:@"trackViewUrl"];
//取得本地程序的版本號(hào)
NSDictionary *localDic =[[NSBundle mainBundle] infoDictionary];
NSString *localVersion =[localDic objectForKey:@"CFBundleShortVersionString"];
CCLog(@"appStore 版本號(hào)為:%@ 本地版本號(hào)為:%@",newVersion,localVersion);
以下便是比較,這兩個(gè)版本號(hào)是否一致來(lái)決定是否更新盖喷。