如果我們需要實(shí)現(xiàn)應(yīng)用程序版本的自動(dòng)更新提示晨抡,那么我們需要獲取當(dāng)前運(yùn)行程序的版本信息和 appstore里發(fā)布的最新版本信息。當(dāng)前運(yùn)行程序的版本信息狡耻,可以在 mainBundle 里面獲壤疑搿:
NSDictionary *infoDict = [[NSBundle mainBundle]infoDictionary];
NSString *currentVersion = [infoDictobjectForKey:@"CFBundleVersion"];
而 appstore 里發(fā)布的最新版本信息獲取稍微復(fù)雜一些,有兩種方案号醉,思路都是一樣的:
其一:在某個(gè)服務(wù)器上存儲(chǔ)最新發(fā)布的版本信息,需要的時(shí)候向該服務(wù)器查詢辛块;
其二:在需要的時(shí)候向 appstore 查詢畔派;
在這里我來介紹第二種方法:向 appstore 查詢應(yīng)用程序信息,包括作者憨降,版本父虑,app介紹頁面地址等信息该酗。
英文好的同學(xué)可以參考apple的文檔:www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html
具體步驟如下:
1授药,用 POST 方式發(fā)送請(qǐng)求:
http://itunes.apple.com/search?term=你的應(yīng)用程序名稱&entity=software
更加精準(zhǔn)的做法是根據(jù) app 的 id 來查找:
http://itunes.apple.com/lookup?id=你的應(yīng)用程序的ID
2士嚎,從獲得的 response 數(shù)據(jù)中解析需要的數(shù)據(jù)。因?yàn)閺?appstore 查詢得到的信息是 JSON格式的悔叽,所以需要經(jīng)過解析莱衩。解析之后得到的原始數(shù)據(jù)就是如下這個(gè)樣子的:
{
resultCount= 1;
results=? ? (
{
artistId= 開發(fā)者ID;
artistName= 開發(fā)者名稱;
price= 0;
isGameCenterEnabled= 0;
kind= software;
languageCodesISO2A=? ? ? ? ? ? (
EN
);
trackCensoredName= 審(我們的)查名稱;
trackContentRating= 評(píng)級(jí);
trackId= 應(yīng)用程序 ID;
trackName= 應(yīng)用程序名稱";
trackViewUrl= 應(yīng)用程序介紹網(wǎng)址;
userRatingCount= 用戶評(píng)級(jí);
userRatingCountForCurrentVersion= 1;
version= 版本號(hào);
wrapperType= software;
}
);
}
然后從中取得 results 數(shù)組即可,具體代碼如下所示:
Java代碼
NSDictionary *jsonData = [dataPayloadJSONValue];
NSArray *infoArray = [jsonDataobjectForKey:@"results"];
NSDictionary *releaseInfo = [infoArrayobjectAtIndex:0];
NSString *latestVersion = [releaseInfoobjectForKey:@"version"];
NSString *trackViewUrl = [releaseInfoobjectForKey:@"trackViewUrl"];
如果你拷貝 trackViewUrl 的實(shí)際地址娇澎,然后在瀏覽器中打開笨蚁,就會(huì)打開你的應(yīng)用程序在 appstore中的介紹頁面。當(dāng)然我們也可以在代碼中調(diào)用 safari 來打開它趟庄。
UIApplication *application = [UIApplicationsharedApplication];
[application openURL:[NSURL URLWithString:trackViewUrl]];
轉(zhuǎn):https://zhidao.baidu.com/question/2139109580586139748.html