สมัครรับการเปลี่ยนแปลงการกำหนดค่าพร็อกซีของ macOS
ตรวจดูคีย์ที่เกี่ยวข้องของที่เก็บแบบไดนามิก SystemConfiguration และรีเฟรชนโยบายพร็อกซีของทรานสปอร์ตที่กำหนดเองเมื่อ macOS รายงานการเปลี่ยนแปลง
ทรานสปอร์ตที่ใช้สแนปช็อตพร็อกซีเฉพาะตอนเริ่มต้นอาจล้าสมัยได้หลังการเปลี่ยนเครือข่ายหรือตำแหน่ง สำหรับการสมัครรับ macOS SystemConfiguration ให้รักษาวงจรชีวิตนี้ไว้อย่างชัดเจน:
- สร้างเซสชัน SCDynamicStore พร้อม callback
- ลงทะเบียนคีย์หรือรูปแบบที่แน่นอนด้วย
SCDynamicStoreSetNotificationKeysค่าเหล่านี้เป็นอาร์เรย์แยกกัน คีย์พร็อกซีส่วนกลางคือState:/Network/Global/Proxiesเพิ่มอินพุตเฉพาะบริการเฉพาะที่ทรานสปอร์ตใช้งานเท่านั้น - จัดการส่ง callback ผ่าน
SCDynamicStoreSetDispatchQueueหรือแหล่ง run-loop ที่เหมาะสม การลงทะเบียนชื่อเพียงอย่างเดียวไม่ทำให้ callback ทำงาน - เมื่อได้รับการแจ้งเตือน ให้อ่านการกำหนดค่าที่มีผลอีกครั้งและอัปเดตงานถัดไป รายการคีย์ที่เปลี่ยนแปลงไม่ใช่ตัวนโยบายใหม่ที่สมบูรณ์ในตัวเอง
- เมื่อปิด ให้ปิดการส่งด้วยคิวว่างก่อนปล่อยทรัพยากรที่ถือครองอยู่ เก็บที่เก็บและบริบท callback ให้อยู่จนถึงตอนนั้น
เฮดเดอร์ของ Apple กำหนดรายการคีย์ที่เปลี่ยนแปลงว่างเปล่าว่าเป็นการรีสตาร์ตเซิร์ฟเวอร์ที่เก็บแบบไดนามิก ในกรณีนั้นเช่นกัน ให้รีเฟรชสถานะที่เกี่ยวข้องและทิ้งสมมติฐานที่อิงเนื้อหาก่อนหน้า
นี่คือแนวทาง API macOS สาธารณะ เฮดเดอร์ของ Apple กำหนดให้ฟังก์ชันที่เกี่ยวข้องเป็น SPI ส่วนตัวสำหรับ iOS ดังนั้นการสมัครรับเดียวกันจึงไม่ใช่อินเทอร์เฟซแอปพลิเคชัน iOS สาธารณะ