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