iOS개발/MacCatalyst
[MacCatalyst] 스크린 세이버 동작안하게 하기
달님개발자
2022. 7. 20. 12:27
반응형
Mac에서 동영상이 재생중일때는 스크린세이버가 동작하면 안된다.
CatalystAppManager.swift파일에 아래 두 func을 추가하자.
#if targetEnvironment(macCatalyst)
import IOKit.pwr_mgt
var noSleepAssertionId: IOPMAssertionID = 0
var noSleepReturn: IOReturn?
func disableScreenSleep(reason: String = "Unknown reason") -> Bool? {
guard noSleepReturn == nil else {return nil}
noSleepReturn = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep as CFString, IOPMAssertionLevel(kIOPMAssertionLevelOn), reason as CFString, &noSleepAssertionId)
return noSleepReturn == kIOReturnSuccess
}
func enableScreenSleep() -> Bool {
if noSleepReturn != nil {
_ = IOPMAssertionRelease(noSleepAssertionId) == kIOReturnSuccess
noSleepReturn = nil
return true
}
return false
}
#endif
비디오를 열면 적당한 곳에서 아래를 호출해서 스크린 세이버가 작동안되게 한다.
_ = CatalystAppManager().disableScreenSleep()
그리고 비디오를 닫기전에 enableScreenSleep을 실행해준다.
_ = CatalystAppManager().enableScreenSleep()
반응형