APP内部提示版本升级

版本提示升级的两种方式:

1.通过公司内部服务器发送版本号,来提示是否与当前版本一致  从而判断是否需要升级 

2.通过app Store提供的接口,获取app在app store内的相关数据,包括版本号,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];

//    使用后台接口时

//    //申明返回的结果是json类型

//    manager.responseSerializer = [AFJSONResponseSerializer serializer];

//    //申明请求的数据是json类型

//    manager.requestSerializer=[AFJSONRequestSerializer serializer];

//   //申明返回的数据是http类型   

//    manager.requestSerializer = [AFHTTPRequestSerializer serializer];

//   //申明返回的数据是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];//因为后台只传了版本号所以直接请求  有其他字段的话  取版本号之后 需要转码的话转码

NSLog(@"商店的版本是 %@",version);

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

NSString *currentVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];

NSLog(@"当前的版本是 %@",currentVersion);

一般有版本提示的时候  如果不作处理的话 每次到那个页面都会做一次请求   这样用户体验就差些 两种方式让版本提示每天定量弹出提示 

1.  通过后台接口的发布时间控制  后台设置发布时间和频率等 

2.  前端自己控制频率 (例如每天提示一次)

每天提示一次的话    但是增加一个时间  每次到这个页面的时候  前端判断这个请求时间是否是同一天的  是的话 就不调用请求方法  不是的话 则调用

//判断两个时间是否是同一天

- (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];

}

//最好的严谨的一种方式是在第一次安装app应用的时候(或进应用的时候)  给key值currentDate  用NSUserDefaults 保存一个最早的时间  然后每次用这个currentDate的object  获取到的时间  与当前最新的时间做比较的     但是如果不设置直接或取的话  currentDate的object是一个null  与当前时间比较的话  也是可以的

//获取当前时间 

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"];

}

你可能感兴趣的:(APP内部提示版本升级)