版本提示升級的兩種方式:
1.通過公司內(nèi)部服務(wù)器發(fā)送版本號毡惜,來提示是否與當(dāng)前版本一致 ?從而判斷是否需要升級?
2.通過app Store提供的接口橱健,獲取app在app store內(nèi)的相關(guān)數(shù)據(jù),包括版本號台妆,app下載地址翎猛,用戶評級等信息(version = "胖翰?.?.切厘?";trackViewUrl = "https://itunes.apple.com/us/app/mi-jin-she/id******?mt=*&uo=*";trackContentRating = "9+";)? 之后通過獲取版本號的字段進行比較? 從而判斷是否需要升級? ? ? app Store提供的Url(https://itunes.apple.com/lookup?id=萨咳??疫稿?培他??遗座?舀凛??)(员萍?腾降??碎绎?螃壤??筋帖?奸晴? ?為app在app store的id ?只有上線之后才有)
NSString *urlStr = @"*********";(后臺地址 或者app store的 Url)
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
//? ? 使用后臺接口時
//? ? //申明返回的結(jié)果是json類型
//? ? manager.responseSerializer = [AFJSONResponseSerializer serializer];
//? ? //申明請求的數(shù)據(jù)是json類型
//? ? manager.requestSerializer=[AFJSONRequestSerializer serializer];
// ? //申明返回的數(shù)據(jù)是http類型 ??
//? ? manager.requestSerializer = [AFHTTPRequestSerializer serializer];
// ? //申明返回的數(shù)據(jù)是http類型
//? ? manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//
//? ? manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
[manager POST:urlStr parameters:nil success:^(AFHTTPRequestOperation * operation ,id responseObject) {
NSLog(@"+++++ responseObject --%@",responseObject);
//? ? ? ? 使用后臺接口時
//? ? ? ? NSData *da ta = responseObject;
NSArray *infoContent = [result.responsedData objectForKey:@"results"];
NSString *version = [[infoContent objectAtIndex:0] objectForKey:@"version"];
//? ? ? ? 使用后臺接口時
//? ? ? ? NSString *version = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];//因為后臺只傳了版本號所以直接請求 ?有其他字段的話 ?取版本號之后 需要轉(zhuǎn)碼的話轉(zhuǎn)碼
NSLog(@"商店的版本是 %@",version);
NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
NSString *currentVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];
NSLog(@"當(dāng)前的版本是 %@",currentVersion);
一般有版本提示的時候 ?如果不作處理的話 每次到那個頁面都會做一次請求 ? 這樣用戶體驗就差些 兩種方式讓版本提示每天定量彈出提示?
1. ?通過后臺接口的發(fā)布時間控制 ?后臺設(shè)置發(fā)布時間和頻率等?
2. ?前端自己控制頻率 (例如每天提示一次)
每天提示一次的話 ? ?但是增加一個時間 ?每次到這個頁面的時候 ?前端判斷這個請求時間是否是同一天的 ?是的話 就不調(diào)用請求方法 ?不是的話 則調(diào)用
//判斷兩個時間是否是同一天
- (BOOL)isSameDay:(NSDate*)date1 date2:(NSDate*)date2
{
NSCalendar* calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |? NSCalendarUnitDay;
NSDateComponents* comp1 = [calendar components:unitFlags fromDate:date1];
NSDateComponents* comp2 = [calendar components:unitFlags fromDate:date2];
return [comp1 day]? == [comp2 day] &&[comp1 month] == [comp2 month] &&[comp1 year]? == [comp2 year];
}
//最好的嚴謹?shù)囊环N方式是在第一次安裝app應(yīng)用的時候(或進應(yīng)用的時候) ?給key值currentDate? 用NSUserDefaults 保存一個最早的時間? 然后每次用這個currentDate的object ?獲取到的時間 ?與當(dāng)前最新的時間做比較的 ? ? 但是如果不設(shè)置直接或取的話 ?currentDate的object是一個null ?與當(dāng)前時間比較的話 ?也是可以的
//獲取當(dāng)前時間?
NSDate *currentDate2 = [NSDate date];
NSUserDefaults * Defaultes = [NSUserDefaults standardUserDefaults];
NSDate * daaa = [Defaultes valueForKey:@"currentDate"];
NSLog(@"+++++*********________ currentDate2? %@? ? daaa%@",inputDate,daaa);
if ([self isSameDay:currentDate2 date2:daaa]) {
[[NSUserDefaults standardUserDefaults] setObject:currentDate2 forKey:@"currentDate"];
}else{
//版本號請求方法
[self updateVersion];
[[NSUserDefaults standardUserDefaults] setObject:currentDate2 forKey:@"currentDate"];
}