Transport yang hanya menggunakan snapshot proxy saat mulai dapat tetap usang setelah perubahan jaringan atau lokasi. Untuk langganan macOS SystemConfiguration, pertahankan siklus hidup ini secara eksplisit:

  1. Buat sesi SCDynamicStore dengan callback.
  2. Daftarkan kunci atau pola yang tepat menggunakan SCDynamicStoreSetNotificationKeys. Keduanya adalah array terpisah. Kunci proxy global adalah State:/Network/Global/Proxies; tambahkan input khusus layanan hanya di tempat transport menggunakannya.
  3. Atur pengiriman callback melalui SCDynamicStoreSetDispatchQueue atau sumber run-loop yang sesuai. Mendaftarkan nama saja tidak menjalankan callback.
  4. Saat menerima notifikasi, baca ulang konfigurasi efektif dan perbarui pekerjaan berikutnya. Daftar kunci yang berubah bukanlah kebijakan baru yang lengkap.
  5. Saat mematikan, nonaktifkan pengiriman dengan antrean nol sebelum melepaskan sumber daya yang dimiliki. Pertahankan penyimpanan dan konteks callback tetap hidup hingga saat itu.

Header Apple mendefinisikan daftar kunci yang berubah yang kosong sebagai mulai ulang server penyimpanan dinamis. Dalam kasus itu pun, segarkan status yang relevan dan buang asumsi berdasarkan isi sebelumnya.

Ini adalah pendekatan API macOS publik. Header Apple menandai fungsi terkait sebagai SPI privat untuk iOS, sehingga langganan yang sama bukanlah antarmuka aplikasi iOS publik.

Artikel terkait