Абониране за промени в конфигурацията на прокси в macOS
Наблюдавайте съответните ключове на динамичното хранилище SystemConfiguration и обновявайте прокси политиката на персонализиран транспорт, когато macOS съобщи за промени.
Транспорт, който използва снимка на прокси само при стартиране, може да остане остарял след промяна на мрежата или местоположението. За абонамент към macOS SystemConfiguration поддържайте този жизнен цикъл явен:
- Създайте сесия SCDynamicStore с callback функция.
- Регистрирайте точни ключове или шаблони чрез
SCDynamicStoreSetNotificationKeys. Това са отделни масиви. Глобалният ключ за прокси еState:/Network/Global/Proxies; добавяйте входове за конкретна услуга само там, където транспортът ги използва. - Осигурете доставяне на callback чрез
SCDynamicStoreSetDispatchQueueили подходящия източник на run-loop. Регистрирането само на имена не стартира callback. - При известие прочетете отново действащата конфигурация и обновете следващата работа. Списъкът с променени ключове сам по себе си не е пълната нова политика.
- При спиране изключете доставянето с празна опашка, преди да освободите собствените ресурси. Пазете хранилището и контекста на callback живи до тогава.
Заглавката на Apple дефинира празен списък с променени ключове като рестартиране на сървъра на динамичното хранилище. В този случай също обновете съответното състояние и отхвърлете предположенията, базирани на предишното съдържание.
Това е публичен подход чрез macOS API. Заглавките на Apple отбелязват съответните функции като частен SPI за iOS, така че същият абонамент не е публичен интерфейс за iOS приложения.