iOS精确获取系统时间---商品倒计时抢购

在很多app中,有很多业务需要实时获取服务器时间,比如商品抢购倒计时,考勤打卡等功能需要,如果你是获取系统时间比如NSDate是不准的,用户可以随时更改手机系统时间。一般的做法都是以后台返回的时间为准,有两种做法,

  1. 让后台在每个接口都返回一个时间,这样每次请求接口的时候都能拿到时间;
  2. 让后台新增一个获取时间的接口,每次我们需要获取时再请求获取,我这边使用的是第二种。

设计思路:

1、创建一个单利的管理对象,负责管理获取时间,添加监听者,销毁监听者。
2、因为项目中很有可能是多个地方都需要用到这个时间,因此我设计一个协议类,任何对象都可以准守这个协议就可以获取准确的时间,只要时间发生变化都会对每个准守协议的对象更新时间。

使用方法:

//第一步,初始化对象
//创建对象
HRMSeverTimeHelp *help = [HRMSeverTimeHelp shareInstance];

//给自己的观察者添加订阅
[help addListener:self];

//开始请求服务器时间
[help requestSeverTime];


//第二步,准守协议
//观察者遵守TimerListenerProtocol协议
//你的vc

//在更新回调方法取得返回的时间:(你可以更改这个协议方法,具体根据你业务决定)
- (void)didChangeSeverTime:(NSTimeInterval)timeStamp date:(NSDate *_Nullable)date dateString:(NSString *_Nullable)dateString;

//第三步
//在你需要取消订阅的地方取消订阅
[help removeListener:self];

文字都是乏力的,直接看代码吧!GitHub :https://github.com/JW-chenjingwei/SystemTimeHelp
真恶心,外链都不支持跳转了!

你可能感兴趣的:(iOS精确获取系统时间---商品倒计时抢购)