Transport używający migawki proxy tylko przy starcie może pozostać nieaktualny po zmianie sieci lub lokalizacji. W przypadku subskrypcji macOS SystemConfiguration utrzymuj ten cykl życia jawnie:

  1. Utwórz sesję SCDynamicStore z funkcją zwrotną.
  2. Zarejestruj dokładne klucze lub wzorce za pomocą SCDynamicStoreSetNotificationKeys. To osobne tablice. Globalny klucz proxy to State:/Network/Global/Proxies; dodawaj dane specyficzne dla usługi tylko tam, gdzie transport ich używa.
  3. Zorganizuj dostarczanie funkcji zwrotnej przez SCDynamicStoreSetDispatchQueue lub odpowiednie źródło run-loop. Samo zarejestrowanie nazw nie uruchamia funkcji zwrotnej.
  4. Po powiadomieniu odczytaj ponownie obowiązującą konfigurację i zaktualizuj dalszą pracę. Lista zmienionych kluczy nie jest sama w sobie pełną nową polityką.
  5. Przy zamykaniu wyłącz dostarczanie za pomocą pustej kolejki, zanim zwolnisz posiadane zasoby. Do tego czasu utrzymuj magazyn i kontekst funkcji zwrotnej przy życiu.

Nagłówek Apple definiuje pustą listę zmienionych kluczy jako restart serwera magazynu dynamicznego. W takim przypadku również odśwież odpowiedni stan i odrzuć założenia oparte na poprzedniej zawartości.

To publiczne podejście API macOS. Nagłówki Apple oznaczają odpowiednie funkcje jako prywatne SPI dla iOS, więc ta sama subskrypcja nie jest publicznym interfejsem aplikacji iOS.

Powiązane artykuły