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

时间:2018-08-30 05:00:23

标签: swift notifications battery uidevice

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

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

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

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

2 个答案:

答案 0 :(得分:0)

  

我不确定您可以在锁定屏幕上获取该信息:

允许我告诉您整个过程如何实现完全相同的功能 充电警报应用程序这真的很简单:请按照以下说明进行操作:

第1步:
您需要将项目的功能中的Background Fetch设置为“开”,

第2步:

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

第3步:

获取电池电量:

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

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

    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

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

答案 1 :(得分:0)

我经历了这个this tutorial

,这似乎运行良好。我只做了一个更改,即在info.plist文件中添加了一个新属性Application does not run in background,并为其赋予了值YES