博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS实现程序长时间未操作退出
阅读量:6425 次
发布时间:2019-06-23

本文共 1827 字,大约阅读时间需要 6 分钟。

大部分银行客户端都有这样的需求,在用户一定时间内未操作,即认定为token失效,但未操作是任何判定的呢?我的想法是用户未进行任何touch时间,原理就是监听runloop事件。我们需要进行的操作是创建一个UIApplication的子类,废话不多说,上代码

// 定义未操作通知的时间,也可以从服务器上获取。#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])

 

转载于:https://www.cnblogs.com/xiaobaizhu/p/7344585.html

你可能感兴趣的文章
手把手玩转win8开发系列课程(3)
查看>>
NGINX引入线程池 性能提升9倍
查看>>
《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
查看>>
linux下mongodb定时备份指定的集合
查看>>
oVirt JBAS server start failed, ajp proxy cann't server correct. ovirt-engine URL cann't open
查看>>
CDP WebConsole上线公告
查看>>
ubuntu下安装摄像头应用程序xawtv
查看>>
PostgreSQL 如何比较两个表的定义是否一致
查看>>
Ambari安装Hadoop集群
查看>>
WCF学习之旅—基于ServiceDebug的异常处理(十七)
查看>>
CLREX
查看>>
再也不用担心this指向的问题了
查看>>
使用putty远程连接linux
查看>>
【comparator, comparable】小总结
查看>>
Node 版本管理
查看>>
34、重分布配置实验之分发列表distribute-list
查看>>
命令模式-对象行为型
查看>>
VS2017配置、提高生产力、代码辨识度 (工欲善其事必先利其器)新手必备!
查看>>
[Phoenix] 七、如何使用自增ID
查看>>
路由基本配置(上)
查看>>