美文网首页
APP内部提示版本升级

APP内部提示版本升级

作者: 我们的新世界 | 来源:发表于2016-06-22 09:56 被阅读356次

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

    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内部提示版本升级

          本文链接:https://www.haomeiwen.com/subject/jpogdttx.html