1 votos

Evento de cable Ethernet desenchufado

TL;DR; Quiero escuchar el evento de cable ethernet desenchufado (pérdida de conectividad, no disponible, disponibilidad de la interfaz de red, interfaz cambiada), ¿es posible? ¿Qué API debería buscar?

Compré un SAI sin puerto USB para mi mac, por lo que tengo que detectar la pérdida de alimentación principal manualmente (de forma programada). Mi mac utiliza ethernet para internet, y no tengo pensado conectar mi router al SAI, así que cuando el ethernet pierde la conexión, quiero ejecutar algo después de unos minutos.

0voto

Fabrice Puntos 6

Mi solución actual es

  1. Consigue un Centro de Notificaciones Darwin, CFNotificationCenterGetDarwinNotifyCenter()
  2. Escuche este evento com.apple.system.config.network_change , refiérase a /usr/include/notify_key.h en su mac para las llaves
  3. Hacer algo en la devolución de llamada

Código

import Foundation
import CoreFoundation

let center = CFNotificationCenterGetDarwinNotifyCenter()
let kNotifySCNetworkChange = "com.apple.system.config.network_change" as CFString

let networkChangedCallback: CFNotificationCallback = {
  (center, observer, name, object, userInfo) in
  print("network changed")
  print(userInfo ?? "nothing")
}

CFNotificationCenterAddObserver(center, nil, networkChangedCallback, kNotifySCNetworkChange, nil, .deliverImmediately)

RunLoop.main.run() // So CodeRunner can keep running

Estoy codificando la clave, no pude encontrar ninguna documentación sobre esas claves en la documentación de Apple

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X