標籤:des blog http io ar os sp for 檔案
iOS程式自動提示更新的實現方案大致分為兩種:
第一種,自己伺服器提供一個介面,告知相關app的目前的版本,是否需要更新,以及更新的地址等資訊 。
第二種,就是利用蘋果的appstore 提供的相關api進行查詢更新。
由於此前沒有找到iOS程式更新的方法,就用了第一種方式,但後來發現了一些問題,自己提供伺服器,需要維護,程式提交更新後,由於蘋果需要審核,中間會有時間差,這個時間不好把握。後台就找蘋果的相關文檔,終於找到了。
http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html
實現機制:
#define APP_URL @"http://itunes.apple.com/lookup?id=你程式的appId"
ASIFormDataRequest *formRequst = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:APP_URL]];
請求網路資料,返回的大致資料如下,其他還有好多資料,我們把關鍵的給截取出來
{
resultCount = 1;
results = (
{
artistId = 開發人員 ID;
artistName = 開發人員名稱;
price = 0;
isGameCenterEnabled = 0;
kind = software;
languageCodesISO2A = (
EN
);
trackCensoredName = 審查名稱;
trackContentRating = 評級;
trackId = 應用程式識別碼;
trackName = 應用程式名稱";
trackViewUrl = 應用程式介紹網址;
userRatingCount = 使用者評級;
userRatingCountForCurrentVersion = 1;
version = 版本號碼;
wrapperType = software;
}
);
}
取得這些資料後關鍵的資訊就是“ version”最新版本號碼和“ trackViewUrl”程式地址。然後與本地程式的版本比較即可。
上面的build 對應info.plist檔案裡的“Bundle version”欄位,供程式調試用,即內部調試版本號碼,不是顯示在appstore上面的
version 對應info.plist檔案裡的“Bundle versions string, short”欄位,這才是真正的版本號碼,顯示在appstore上的。由於之前學習的時候,上網查資料,有好多人老是把這兩個給弄混了,我也糾結了一會,特此說明一下,以備記憶。
//擷取appstore最新的版本號碼
NSString *newVersion = [rightDic objectForKey:@"version"];
//擷取應用程式的地址
NSString *newURL = [rightDic objectForKey:@"trackViewUrl"];
//取得本地程式的版本號碼
NSDictionary *localDic =[[NSBundle mainBundle] infoDictionary];
NSString *localVersion =[localDic objectForKey:@"CFBundleShortVersionString"];
NSLog(@"appStore 版本號碼為:%@ 本地版本號碼為:%@",newVersion,localVersion);
以下便是比較,這兩個版本號碼是否一致來決定是否更新,簡單,故略之。有需要的可以留言聯絡。
iOS開發中檢測版本,有新版本則更新