gpt4 book ai didi

iphone - 在我的 iPhone 应用程序中实现空闲时间

转载 作者:行者123 更新时间:2023-12-03 19:34:51 27 4
gpt4 key购买 nike

我想在我的应用程序中实现一个功能,以便当用户 5 分钟没有使用该应用程序时,该应用程序会从头开始运行,而不是从用户停止的位置运行。

我发现 plist 属性“应用程序不在后台运行”,但此函数让应用程序始终从一开始就运行。有没有办法可以为此 plist 属性设置计时器或在伪代码中执行类似操作?

<小时/>

更新:

上面提到的方法都是正确的。不过,我正在寻找一种解决方案,让应用程序在应用程序进入后台后注意到空闲时间。 (即按主页按钮后)。希望你能帮帮我

<小时/>

解决方案:

我已经找到解决办法了。首先,我将 NSDate 保存在

- (void)applicationDidEnterBackground:(UIApplication *)application
{
//save date
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[[NSUserDefaults standardUserDefaults] setObject:NSDate.date forKey:@"date"];
[defaults synchronize];
}

然后,当我返回应用程序时,我会将保存的日期与实际日期进行比较。如果时间间隔大于 5 分钟。应用程序转到密码 View Controller ,这会强制用户再次登录!

    - (void)applicationDidBecomeActive:(UIApplication *)application
{
//calculate difference in time
NSDate *time = [[NSUserDefaults standardUserDefaults] objectForKey:@"date"];

NSTimeInterval timeInterval = [[NSDate date] timeIntervalSinceDate:time];

if(timeInterval >= 300){

Password *vc = [[Password alloc] init];
self.window.rootViewController = vc;
[vc release];

[self.window makeKeyAndVisible];
}
}

最佳答案

如果在您的应用程序运行时没有触摸 iPad,则意味着他没有使用您的应用程序,对吗?

然后您可以按照下面的代码检查空闲时间...(我从我的博客文章中粘贴此代码)

第 1 步 – 在您的项目中添加一个类 (IdleTimeCheck),该类是 UIApplication 的子类。在实现文件中,重写 sendEvent: 方法,如下所示:

- (void)sendEvent:(UIEvent *)event 
{
[super sendEvent:event];

// Only want to reset the timer on a Began touch or an Ended touch, to reduce the number of timer resets.
NSSet *allTouches = [event allTouches];
if ([allTouches count] > 0)
{
// allTouches count only ever seems to be 1, so anyObject works here.
UITouchPhase phase = ((UITouch *)[allTouches anyObject]).phase;
if (phase == UITouchPhaseBegan || phase == UITouchPhaseEnded)
[self resetIdleTimer];
}
}

- (void)resetIdleTimer
{
if (idleTimer) {
[idleTimer invalidate];
[idleTimer release];
}

idleTimer = [[NSTimer scheduledTimerWithTimeInterval:maxIdleTime target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO] retain];
}

- (void)idleTimerExceeded {
NSLog(@"idle time exceeded");
//write logic to go to start page again
}

其中 maxIdleTime 和idleTimer 是实例变量。

第 2 步 – 修改 main.m 文件中的 UIApplicationMain 函数,以使用 UIApplication 子类作为主类。

int retVal = UIApplicationMain(argc, argv, @"IdleTimeCheck",nil);

请参阅我的博客上的这篇文章 - http://www.makebetterthings.com/iphone/detecting-user-inactivityidle-time-since-last-touch-on-screen/

关于iphone - 在我的 iPhone 应用程序中实现空闲时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8537389/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com