Un transport care folosește o copie a proxy-ului doar la pornire poate rămâne învechit după o schimbare de rețea sau locație. Pentru un abonament macOS SystemConfiguration, păstrați acest ciclu de viață explicit:

  1. Creați o sesiune SCDynamicStore cu un callback.
  2. Înregistrați chei sau modele exacte cu SCDynamicStoreSetNotificationKeys. Sunt tablouri separate. Cheia globală de proxy este State:/Network/Global/Proxies; adăugați intrări specifice serviciului doar acolo unde transportul le folosește.
  3. Organizați livrarea callback-ului prin SCDynamicStoreSetDispatchQueue sau sursa run-loop potrivită. Doar înregistrarea numelor nu rulează callback-ul.
  4. La notificare, recitiți configurația efectivă și actualizați lucrul ulterior. Lista cheilor modificate nu este în sine noua politică completă.
  5. La oprire, dezactivați livrarea cu o coadă nulă înainte de a elibera resursele deținute. Păstrați depozitul și contextul callback-ului vii până atunci.

Antetul Apple definește o listă goală de chei modificate ca o repornire a serverului depozitului dinamic. Și în acest caz, împrospătați starea relevantă și eliminați presupunerile bazate pe conținutul anterior.

Aceasta este o abordare API macOS publică. Antetele Apple marchează funcțiile corespunzătoare ca SPI privat pentru iOS, deci același abonament nu este o interfață publică de aplicații iOS.

Articole similare