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