我知道用户可以通过观察电池图标的颜色来检测低功耗模式,但是是否有一个API调用允许程序检测低功耗模式?
发布于 2015-07-26 00:57:34
发布于 2016-05-22 03:18:28
下面是一个检查低功耗模式的代码片段。请注意,此特性需要iOS 9或更高版本。如果您不是针对旧版本,您可以取消版本检查。
Swift 4.2
if #available(iOS 9.0, *) {
if ProcessInfo.processInfo.isLowPowerModeEnabled {
<#Do low power stuff#>
} else {
<#Not in low power mode#>
}
}文档
https://developer.apple.com/documentation/foundation/processinfo/1617047-islowpowermodeenabled
Swift 3.0
if #available(iOS 9.0, *) {
if ProcessInfo.processInfo().lowPowerModeEnabled {
<#Do low power stuff#>
} else {
<#Not in low power mode#>
}
}Swift 2.2
if #available(iOS 9.0, *) {
if NSProcessInfo.processInfo().lowPowerModeEnabled {
<#Do low power stuff#>
} else {
<#Not in low power mode#>
}
}发布于 2022-06-02 10:54:55
你可以使用下面的观察者与uikit或迅捷(不重要)
..。
public extension UIDevice {
enum PowerModeState: String, Codable {
case lowPower
case normalPower
init(isLowPowerModeEnabled: Bool) {
switch isLowPowerModeEnabled {
case true: self = .lowPower
case false: self = .normalPower
}
}
}
}..。
..。
public class DevicePowerModeObserver: ObservableObject {
@Published private(set) var devicePowerModeState: UIDevice.PowerModeState
private var pipelines: Set<AnyCancellable> = []
public init() {
self.devicePowerModeState = UIDevice.PowerModeState(isLowPowerModeEnabled: ProcessInfo.processInfo.isLowPowerModeEnabled)
initPipelines()
}
private static let powerStateDidChangeNotificationName = Notification.Name.NSProcessInfoPowerStateDidChange
private func initPipelines() {
NotificationCenter.default.publisher(for: Self.powerStateDidChangeNotificationName)
.map { _ in
UIDevice.PowerModeState(isLowPowerModeEnabled: ProcessInfo.processInfo.isLowPowerModeEnabled)
}
.receive(on: DispatchQueue.main)
.assign(to: &$devicePowerModeState)
}
}..。
https://stackoverflow.com/questions/30944590
复制相似问题