iPhone-即使IdleTimeDisabled为是,手机也会进入睡眠状态

iPhone-即使IdleTimeDisabled为是,手机也会进入睡眠状态,iphone,Iphone,我在appdelegate的ApplicationIDFinishLaunching:方法中使用此方法,以确保iPhone在应用程序打开期间不会进入睡眠状态 [application setIdleTimerDisabled:YES]; 它在所有屏幕上都能正常工作,但在其中一个屏幕上,iPhone会进入睡眠状态。我不知道如何重现这种情况,而且似乎是随机发生的 有人能告诉我如何处理这种情况吗 谢谢在应用程序代理的+initialize方法中设置此属性,例如: + (void) initializ

我在appdelegate的ApplicationIDFinishLaunching:方法中使用此方法,以确保iPhone在应用程序打开期间不会进入睡眠状态

[application setIdleTimerDisabled:YES];
它在所有屏幕上都能正常工作,但在其中一个屏幕上,iPhone会进入睡眠状态。我不知道如何重现这种情况,而且似乎是随机发生的

有人能告诉我如何处理这种情况吗


谢谢

在应用程序代理的
+initialize
方法中设置此属性,例如:

+ (void) initialize {   
    if ([self class] == [MyAppDelegate class]) {
        UIApplication* myApp = [UIApplication sharedApplication];
        myApp.idleTimerDisabled = YES;
    }
}

我使用以下方法在整个应用程序中设置和取消设置此属性:

[UIApplication sharedApplication].idleTimerDisabled = YES;

设置你有问题的地方可以修复它,尽管它可能是一个创可贴解决方案。

< P>我认为在UIApple类中不存在StEdLeTimeSudio。属性不仅搜索set-method,还搜索其他类似的命名方法


使用点访问器是解决问题的最佳方法。

我也遇到过类似的问题,重新启动手机解决了这个问题。我找不到它的编程修复程序,因为即使是在1秒间隔内调用idleTimerDisabled函数的计时器也无法修复它。

尝试使用

[UIApplication sharedApplication].idleTimerDisabled = NO;
[UIApplication sharedApplication].idleTimerDisabled = YES;
而不是

[UIApplication sharedApplication].idleTimerDisabled = YES;
有趣的黑客,但它的工作


另请参阅线程

如果您的应用程序正在使用摄像头,则应用程序在使用摄像头后将进入睡眠状态。因此,您需要在应用程序列表中添加
UIRequiredDeviceCapabilities
。可以添加不同的设备,如图所示

谢天谢地,这个问题是5年前发布的,从那时起,Xcode取得了突飞猛进的进步

然而。。。2015年,使用Xcode 6.2和iOS 8.2,该漏洞仍然存在

以下是您实际需要做的事情,以防止您的设备进入睡眠状态

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}
(喝杯啤酒,这很痛苦。)

当我的应用程序第一次在设备上运行时,它会从web服务加载一堆数据。但是,如果运行时间太长,屏幕会褪色,然后关闭,设备会锁定,我的web请求将以一个丑陋的“网络连接丢失”错误终止

我试图添加代码以简单地设置/取消设置
idleTimerDisabled
值,但这一更改并没有持续很长时间,设备在一段时间后仍然会自动锁定

//  This didn't work for me  (for very long !)
[UIApplication sharedApplication].idleTimerDisabled = NO;
[UIApplication sharedApplication].idleTimerDisabled = YES;
相反,我需要做的是每隔20秒设置/取消设置一个计时器

在my.h文件中:

@property (strong, nonatomic) NSTimer* stayAliveTimer;
-(void)callEveryTwentySeconds;
在my.m文件中:

-(void)callEveryTwentySeconds
{
    //  DON'T let the device go to sleep during our sync
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
}

-(void)loadDataFromWebService
{
    self.stayAliveTimer = [NSTimer scheduledTimerWithTimeInterval:20.0
                                                           target:self
                                                         selector:@selector(callEveryTwentySeconds)
                                                         userInfo:nil
                                                          repeats:YES];

    //  
    //  Code to call our web service in a background thread and wait
    //  for it to finish (which might take a few minutes)
    //  

    //  Kill off our "Stay alive" timer, and allow the device to Auto Lock whenever it wants.
    [self.stayAliveTimer invalidate];

    //  Give our device permission to Auto-Lock when it wants to again.
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}
真的吗,苹果

现在是2015年,Xcode真的还是这么糟糕


我希望这段代码能帮助其他Xcode受害者。

我也有同样的问题。我需要将屏幕调暗,但当关闭相机时,iphone会进入睡眠状态

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}
然后我在打开/关闭相机后调用它,它工作了

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

与其使用Appdelegate,不如在希望屏幕灯光处于活动状态的特定视图控制器中使用它

Swift 5.0版本:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.shared.isIdleTimerDisabled = true
}
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.shared.isIdleTimerDisabled = false
}

如果该方法不存在,应用程序将在运行时崩溃,假设您禁用或忽略了编译器警告…您有关于此摄像头的进一步信息吗?博客/文章还是什么?因为我们不能为相机添加UIRequiredDeviceCapability,因为使用我们的应用程序并不需要它。@Buju在我的应用程序中,我发现在使用相机后,
idleTimer
设置被相机应用程序覆盖。指定<代码>UIRequiredDeviceCapabilities后,问题得到解决。请仔细观察。我们不能在从摄像头选择器返回后将idleTimer设置为禁用吗?我要试试,它叫Xcode,这实际上不是IDE的问题。正确地发泄你的愤怒。我为我在Xcode中的大写字母不正确向大家道歉。我觉得很傻。为什么我们需要每20秒设置/取消设置一次计时器?也许这不应该是一个完美的解决方案,因为我也有同样的问题,希望解决它。我正在将
idleTimerDisabled
设置为
YES
,但我的屏幕在一段时间后变暗了。这肯定不是完美的解决方案。但问题是,如果你不经常“将其设置为是,并将其设置为否”,那么设备确实会进入睡眠状态。所以你需要某种循环,让你的设备保持清醒。。如果你能找到更好的方法,请告诉我们!IdleTimeDisabled肯定有问题。我有这些问题:在我的5s上,设置为“是”可以工作,但设置为“否”不能启用睡眠。此外,一些用户抱怨说它在他们的设备上根本不起作用——不管怎样,它都会进入睡眠状态。看起来它的行为取决于设备。你用什么iPhone?