Транспорт, що використовує знімок проксі лише під час запуску, може залишатися застарілим після зміни мережі або розташування. Для підписки macOS SystemConfiguration підтримуйте цей життєвий цикл явним:

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

Заголовок Apple визначає порожній список змінених ключів як перезапуск сервера динамічного сховища. У такому разі також оновіть відповідний стан і відкиньте припущення, засновані на попередньому вмісті.

Це публічний підхід через API macOS. Заголовки Apple позначають відповідні функції як приватний SPI для iOS, тому та сама підписка не є публічним інтерфейсом застосунків iOS.

Схожі статті