美文网首页iOS经验总结
iOS关于秒杀活动倒计时的处理

iOS关于秒杀活动倒计时的处理

作者: Anchoriter | 来源:发表于2020-04-15 12:01 被阅读0次

demo地址
效果图

效果图

1.时间处理

  • 既然是倒计时,肯定要有一个对比时间,所以为了保证活动倒计时不受修改本机系统时间的影响,参考对比时间为服务器时间。

  • 获取服务器时间的方式是在项目的请求管理类中解析到每一次请求的header信息,里面一般包含一个时间戳

NSHTTPURLResponse *resp = (NSHTTPURLResponse *)response;
NSDictionary *allHeaders = resp.allHeaderFields;
NSString *dateServer = [allHeaders objectForKey:@"Date"];

例如demo中的allHeaderFields打印如下:

{
    "Content-Encoding" = gzip;
    "Content-Length" = 1145;
    "Content-Type" = "text/html";
    Date = "Wed, 15 Apr 2020 01:58:59 GMT";
    Server = bfe;
}
  • 需要做的就是存储每次请求响应中的这个时间戳,demo封装好了分类NSDate+InternetDateTime,可以直接调用并存储最新的时间,以便下次使用
// 记录服务器时间
NSDate *inputDate = [NSDate dateFromInternetDateTimeString:dateServer formatHint:DateFormatHintRFC822];
if (inputDate) {
    [NSDate saveServerTime:inputDate];
}
注意: 计算服务器时间戳的原理就是将请求响应的服务器时间戳和当前本机系统时间戳同时存储下来。在需要使用服务器时间戳时,同时取出之前存储的两个时间戳,计算得到一个差值。然后再获取本机系统时间戳,和差值做计算,得到一个比较准确的服务器时间戳,这个时间戳才是我们倒计时中的参考时间了。

2.倒计时处理

  • 封装一个倒计时管理类SYCountDownManager,内部创建一个计时器,通过传入的截止时间,直接生成倒计时时间,并回传时间模型。时间模型中提供了intNSString两种数据类型。也可通过SYCountDownManager生成固定格式的整体倒计时字符串,例如:9:29:31

  • 关于计时器的选择,没有实际测验,但根据网上查找到的资料分析发现GCD更好些,所有选取了GCD实现计时器。也可以通过其它的方式,只需替换相关代码即可

  • 计时器的销毁,可根据实际情况调用destoryTimer

3.列表处理

  • 使用过程中发现如果列表中同时存在多个倒计时,滚动页面时倒计时会在开始出现时有突然的跳动,为了处理这个问题需要在cell将要出现时就提前给控件赋值。如下两个系统方法中:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath

相关文章

  • iOS关于秒杀活动倒计时的处理

    demo地址效果图 1.时间处理 既然是倒计时,肯定要有一个对比时间,所以为了保证活动倒计时不受修改本机系统时间的...

  • 倒计时

    ios怎么在cell上添加倒计时 iOS中 简单易懂的秒杀倒计时/倒计时 iOS开发-三种倒计时的写法 iOS实现...

  • (转)JS实现活动精确倒计时

    背景 前端页面倒计时功能在很多场景中会用到,如运营活动开始倒计时和活动结束倒计时,又如购物网站的秒杀倒计时,抢购倒...

  • 一个简单的倒计时小例子

    倒计时在秒杀或抢购活动中尤为常用,那今天我就带大家写一种最简单的倒计时。

  • 活动秒杀倒计时

    https://www.jianshu.com/p/df43f1983eab[https://www.jiansh...

  • UIControllerCell秒杀活动倒计时 iOS代码实现

    最近的项目中需要在自定义的Cell中用到活动结束倒计时,所以整理出来在这里:在自定义的Cell.h文件中 在cel...

  • 活动倒计时关于时间的处理

    (void)timeWithStr:(NSString )str{ NSDate dat = [NSDate da...

  • 秒杀活动问题处理

    秒杀活动通常是这样定义:活动方在有限的时间段内(通常是M分钟到H小时不等的时间)给出指定数量O个P商品的大减价抢购...

  • 关于秒杀预约

    关于秒杀预约 今天是夏季共学班的第一次秒杀活动,这个秒杀价格很“诱人”,1折,29.9元。但是需要提前预约。网络学...

  • 【转载】秒杀应用的MYSQL数据库优化

    关于秒杀 随着双11活动的不断发展,小米饥饿营销模式的兴起,“秒杀”已经成为一个热点词汇。在一些活动中,热销商品会...

网友评论

    本文标题:iOS关于秒杀活动倒计时的处理

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