2016-06-02 29 views
5

Sto cercando un modo per disattivare la modalità di sospensione e lo screensaver tramite la mia applicazione utilizzando Swift. So che questo question ha been chiesto before, ma nessuna delle risposte è attuale (almeno per Swift; non so su Objective-C).Utilizzo di Swift per disabilitare la modalità sleep/screen saver per OSX

Originariamente pensavo di utilizzare NSWorkspace.sharedWorkspace().extendPowerOffBy(requested: Int), ma in base allo Apple's documentation, non è attualmente implementato.

Qualche suggerimento?

+0

Ti è capitato di trovare una soluzione a questo? Per UIApplication, questo può essere fatto: 'UIApplication.shared.isIdleTimerDisabled = true', ma' isIdleTimerDisabled' non è un membro di 'NSApplication'. Sarei felice se tu trovassi una soluzione. – Andreas

+0

@Andreas purtroppo no non l'ho fatto. – Matt

risposta

1

Recentemente mi sono imbattuto in questo answer. Si collega a Q&A1340 presso Apple e traduce l'elenco 2 in Swift.

Ho effettuato il refactoring in un codice diverso, che mostra come è possibile utilizzarli nei loop, ad esempio. Ho controllato il codice e funziona.

var assertionID: IOPMAssertionID = 0 
var success: IOReturn? 

func disableScreenSleep(reason: String = "Unknown reason") -> Bool? { 
    guard success != nil else { return nil } 
    success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep as CFString, 
              IOPMAssertionLevel(kIOPMAssertionLevelOn), 
              reason as CFString, 
              &assertionID) 
    return success == kIOReturnSuccess 
} 

func enableScreenSleep() -> Bool { 
    if success != nil { 
     success = IOPMAssertionRelease(noSleepAssertionID) 
     success = nil 
     return true 
    } 
    return false 
} 

Il Q&A1340 answer sottolinea anche che usando NSWorkspace.shared dovrebbe essere utilizzato solo per supportare OS X 10.6 <.

+0

Sto riscontrando gravi problemi nel tradurre il listato 3 in Swift e quindi non posso aiutarlo. Se qualcuno potesse collegarsi a uno, sarei molto felice. I problemi sorgono quando provo a tradurre l'istruzione switch. – Andreas