Транспарт, які выкарыстоўвае здымак проксі толькі на старце, можа застацца састарэлым пасля змены сеткі або месцазнаходжання. Для падпіскі macOS SystemConfiguration трымайце гэты жыццёвы цыкл яўным:

  1. Стварыце сеанс SCDynamicStore з функцыяй зваротнага выкліку.
  2. Зарэгіструйце дакладныя ключы або шаблоны праз SCDynamicStoreSetNotificationKeys. Гэта асобныя масівы. Глабальны ключ проксі — State:/Network/Global/Proxies; дадавайце ўводы для пэўнай службы толькі там, дзе транспарт іх спажывае.
  3. Наладзьце дастаўку зваротнага выкліку праз SCDynamicStoreSetDispatchQueue або адпаведную крыніцу run-loop. Рэгістрацыя адных толькі імёнаў не запускае зваротны выклік.
  4. Пасля апавяшчэння перачытайце дзейсную канфігурацыю і абнавіце наступную працу. Спіс змененых ключоў сам па сабе не з’яўляецца поўнай новай палітыкай.
  5. Пры завяршэнні адключыце дастаўку пустой чаргой перад вызваленнем уласных рэсурсаў. Трымайце сховішча і кантэкст зваротнага выкліку жывымі да таго часу.

Загаловак Apple вызначае пусты спіс змененых ключоў як перазапуск сервера дынамічнага сховішча. У такім выпадку таксама абнавіце адпаведны стан і адкіньце здагадкі, заснаваныя на папярэднім змесце.

Гэта публічны падыход macOS API. Загалоўкі Apple пазначаюць адпаведныя функцыі як прыватны SPI для iOS, таму тая ж падпіска не з’яўляецца публічным інтэрфейсам праграм iOS.

Падобныя артыкулы