Включите или выключите экран устройства в iOS

Здравствуйте, я использую приведенный ниже код, чтобы проверить, включен ли экран устройства. Я получил этот код из этот пост SO .

Код:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), nil, displayStatusChanged, "com.apple.springboard.lockcomplete", nil, CFNotificationSuspensionBehavior.deliverImmediately)
        //CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), nil, displayStatusChanged, "com.apple.springboard.lockstate", nil, CFNotificationSuspensionBehavior.deliverImmediately)

        return true
    }
}//AppDelegate class end here

func displayStatusChanged(center:CFNotificationCenter,observer: UnsafeMutableRawPointer?,name:CFString,object: UnsafeRawPointer?,userInfo:CFDictionary) -> Void {

}

Но я получил эту ошибку:

Невозможно преобразовать значение типа "(CFNotificationCenter, UnsafeMutableRawPointer?, CFString, UnsafeRawPointer?, CFDictionary) -> Void" в ожидаемый тип аргумента "CFNotificationCallback!" (иначе 'ImplicitlyUnwrappedOptional‹@convention(c) (Необязательный, Необязательный, Необязательный, Необязательный, Необязательный) -> ()>')

Кто-нибудь знает, что я делаю неправильно с функцией displayStatusChanged? Любая помощь, предложения или ссылки будут оценены.

Спасибо


person Pratik Prajapati    schedule 21.06.2018    source источник
comment
Почему ваш displayStatusChanged сидит вне вашего класса?   -  person shim    schedule 21.06.2018


Ответы (1)


Согласно документации:

  • параметр center должен быть необязательным (т.е. отсутствует ?),
  • для name у вас есть CFString, но в документации указано CFNotificationName?
  • и CFDictionary должен быть необязательным (вам не хватает ?),

Следует исправить вашу ошибку, если вы сопоставляете свои параметры с ожидаемыми типами.

func displayStatusChanged(center: CFNotificationCenter?, observer: UnsafeMutableRawPointer?, name: CFNotificationName?, object: UnsafeRawPointer?, userInfo: CFDictionary?) -> Void {

}
person shim    schedule 21.06.2018