如何从锁定屏幕访问设备电池电量

how to access device battery level from lock screen

我一直在尝试复制在以下应用中发现的此功能:Charge Alarm

我的问题是当屏幕锁定且应用程序处于后台状态时,他们如何能够访问设备的电池电量?

他们在应用程序处于后台状态时发送通知。当设备达到特定电池电量时,他们会发送此通知。

注意: 如果通过按主页按钮将应用程序置于后台状态,他们将无法执行此操作。但是,如果用户在应用程序处于活动状态时锁定屏幕,则此功能非常有用。

I'm not Sure You can get that information on lock screen:

请允许我告诉你整个过程如何实现完全相同的功能 在 Charge Alarm App 中有 这真的很简单 : 按照这个 :

第 1 步:
您需要在项目的功能中设置Background Fetch ON,

第 2 步:

开启电池监控: UIDevice.current.isBatteryMonitoringEnabled = true 在你的 AppDelegate 中。

第 3 步:

获取电池电量:

var batteryLevel : Float {
    get {
          return UIDevice.current.batteryLevel 
        } 
    }
}

第 4 步: 在您的 BaseViewController 或任何其他 ViewController 的 viewDidLoad() 中添加 Observer :

    override func viewDidLoad(_ animated: Bool) {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange(_:)), name: NSNotification.Name.UIDeviceBatteryLevelDidChange, object: nil)
      }
     func batteryLevelDidChange(_ notify:Notification){
          // write code to post a local notification on lock screen with text like :  " YOUR DEVICE IS NOW AT xx% "
      }

现在设置后台模式:Refer this

第 5 步:

对于本地通知设置:Refer This

就是这样,您已经创建了相同的功能,如果您有任何问题评论,我会尽快回复。

我经历了这个this tutorial

这似乎工作得很好。我只做了一个更改,即在 info.plist 文件中我添加了一个新的 属性 Application does not run in background 并赋予它一个值 YES.