You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS IPA运行时如何防止屏幕熄灭?代码无效求排查

解决Xamarin.iOS中设置屏幕常亮无效的问题

嘿,我来帮你搞定这个屏幕常亮的问题!你用UIApplication.SharedApplication.IdleTimerDisabled = true的思路完全正确,但可能忽略了两个关键细节,导致设置没生效。

可能的原因

  1. 后台切换后的状态重置:当应用进入后台再回到前台时,iOS系统可能会自动重置IdleTimerDisabled的状态,把它改回false。
  2. 代码执行顺序或第三方库干扰:比如初始化ZXing库、加载Forms应用后,某些内部逻辑可能偷偷修改了这个设置;另外,把设置放在base.FinishedLaunching之前,也可能被系统默认行为覆盖。

解决方案及修正代码

我给你调整后的完整代码,同时补上后台切回时的重置逻辑:

using UIKit;
using Xamarin.Forms;
using ZXing.Net.Mobile.Forms.iOS;

namespace YourAppNamespace.iOS
{
    [Register("AppDelegate")]
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
    {
        private App formsApp;

        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();
            ZXingNetMobileFormsiOSPlatform.Init();
            
            formsApp = new App();
            LoadApplication(formsApp);

            // 把屏幕常亮设置放在LoadApplication之后,确保Forms初始化完成后生效
            UIApplication.SharedApplication.IdleTimerDisabled = true;

            return base.FinishedLaunching(app, options);
        }

        // 关键:当应用从后台回到前台时,重新开启屏幕常亮,防止系统重置
        public override void WillEnterForeground(UIApplication application)
        {
            base.WillEnterForeground(application);
            UIApplication.SharedApplication.IdleTimerDisabled = true;
        }
    }
}

额外检查点

  • 排查项目其他代码:如果应用里有扫码完成后的逻辑,或者使用的ZXing版本存在修改IdleTimerDisabled的情况,需要在对应操作完成后手动再设置一次true。
  • 设备设置排查:虽然概率很低,但可以检查设备的「设置-显示与亮度-自动锁定」,确认没有被MDM或系统强制限制(不过IdleTimerDisabled通常会覆盖这个系统设置)。

修改后重新部署应用,测试正常运行和后台切回的场景,应该就能让屏幕保持常亮啦!

内容的提问来源于stack exchange,提问作者A.Goutam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:18:45