iOS实现程序长时间未操作退出
2017-08-11 10:36
274 查看
大部分银行客户端都有这样的需求,在用户一定时间内未操作,即认定为token失效,但未操作是任何判定的呢?我的想法是用户未进行任何touch时间,原理就是监听runloop事件。我们需要进行的操作是创建一个UIApplication的子类,废话不多说,上代码
还有最重要的一部,将NTApplication与当前的AppDelegate关联起来,在main.m中更改
UIApplicationMain原来的第三个参数是nil,更改成NSStringFromClass([NTApplication class])
// 定义未操作通知的时间,也可以从服务器上获取。 #define kApplicationTimeoutInMinutes 30 @interface NTApplication : UIApplication { NSTimer *_myTimer; } - (void)resetTimer; @end
@implementation NTApplication - (void)sendEvent:(UIEvent *)event { [super sendEvent:event]; if (!_myTimer) { [self resetTimer]; } NSSet *allTouches = [event allTouches]; if ([allTouches count] > 0) { UITouchPhase phase = ((UITouch *) [allTouches anyObject]).phase; if (phase ==UITouchPhaseBegan) { [self resetTimer]; } } [[NSNotificationCenter defaultCenter] postNotificationName:kUserBreakFreeNotification object:nil]; } //重置时钟 - (void)resetTimer { if (_myTimer) { [_myTimer invalidate]; } int timeout = kApplicationTimeoutInMinutes;//超时时间,我这里设置为30s _myTimer = [NSTimer scheduledTimerWithTimeInterval:timeout target:self selector:@selector(freeTimerNotificate:) userInfo:nil repeats:NO]; } //当达到超时时间,发送 kApplicationTimeoutInMinutes通知 - (void)freeTimerNotificate:(NSNotification *)notification { //在想要获得通知的地方注册这个通知就行了 [[NSNotificationCenter defaultCenter] postNotificationName:kUserEnterFreeTimeoutNotification object:nil]; } @end
还有最重要的一部,将NTApplication与当前的AppDelegate关联起来,在main.m中更改
#import "NTApplication.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, NSStringFromClass([NTApplication class]), NSStringFromClass([AppDelegate class])); } }
UIApplicationMain原来的第三个参数是nil,更改成NSStringFromClass([NTApplication class])
相关文章推荐
- iOS开发笔记--如何实现程序长时间未操作退出
- 如何实现程序长时间未操作退出
- iOS实现程序长时间未操作回到登录界面
- Android实现app长时间未操作时自动退出app
- 用户长时间无操作 超时退出系统实现
- IOS运行程序长时间误动作时自动退出
- Android实现app长时间未操作时自动退出app
- Java学习笔记——Java程序运行超时后退出或进行其他操作的实现
- 【Java程序运行超时后退出或进行其他操作的实现】
- 【Java】Java程序运行超时后退出或进行其他操作的实现
- 【Java程序运行超时后退出或进行其他操作的实现】
- Delphi中判断当前程序运行过程中长时间无鼠标与键盘操作
- 【数据结构】二叉树基本操作的程序实现
- 创建Windows服务程序实现定时操作
- 窗体最大化、最小化、隐藏、关闭功能及程序退出功能的按钮实现
- Android如何捕获手机回退键(BACK)实现程序退出?
- C#.net实现windows窗体程序对Excel文件的读写操作
- 多线程 DLL 回调函数问题,当应用程序退出时,有些操作并未完成,造成程序内存泄露,如何解决呢
- nohup命令实现退出终端后程序继续后台运行
- ExtJS+ASP.NET实现真实的进度条显示服务器端长时间操作的进度