首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有任何方法以编程方式检测iOS 9低功耗模式?

是否有任何方法以编程方式检测iOS 9低功耗模式?
EN

Stack Overflow用户
提问于 2015-06-19 18:04:33
回答 4查看 3.2K关注 0票数 10

我知道用户可以通过观察电池图标的颜色来检测低功耗模式,但是是否有一个API调用允许程序检测低功耗模式?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-26 00:57:34

票数 6
EN

Stack Overflow用户

发布于 2016-05-22 03:18:28

下面是一个检查低功耗模式的代码片段。请注意,此特性需要iOS 9或更高版本。如果您不是针对旧版本,您可以取消版本检查。

Swift 4.2

代码语言:javascript
复制
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

代码语言:javascript
复制
if #available(iOS 9.0, *) {
    if ProcessInfo.processInfo().lowPowerModeEnabled {
        <#Do low power stuff#>
    } else {
        <#Not in low power mode#>
    }
}

Swift 2.2

代码语言:javascript
复制
if #available(iOS 9.0, *) {
    if NSProcessInfo.processInfo().lowPowerModeEnabled {
        <#Do low power stuff#>
    } else {
        <#Not in low power mode#>
    }
}
票数 8
EN

Stack Overflow用户

发布于 2022-06-02 10:54:55

你可以使用下面的观察者与uikit或迅捷(不重要)

..。

代码语言:javascript
复制
public extension UIDevice {
    enum PowerModeState: String, Codable {
        case lowPower
        case normalPower
        
        init(isLowPowerModeEnabled: Bool) {
            switch isLowPowerModeEnabled {
            case true: self = .lowPower
            case false: self = .normalPower
            }
        }
    }
}

..。

..。

代码语言:javascript
复制
 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)
    }
}

..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30944590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档