macOSのプロキシ設定変更を購読する
関連するSystemConfigurationの動的ストアのキーを監視し、macOSが変更を報告したときにカスタムトランスポートのプロキシポリシーを更新します。
起動時にのみプロキシのスナップショットを使うトランスポートは、ネットワークや場所の変更後に古いままになることがあります。macOS SystemConfigurationの購読では、このライフサイクルを明示的に保ちます。
- コールバック付きのSCDynamicStoreセッションを作成します。
SCDynamicStoreSetNotificationKeysで正確なキーまたはパターンを登録します。これらは別々の配列です。グローバルなプロキシキーはState:/Network/Global/Proxiesです。サービス固有の入力は、トランスポートがそれを使う場所にだけ追加します。SCDynamicStoreSetDispatchQueueまたは適切なrun-loopソースを通じてコールバック配信を設定します。名前を登録するだけではコールバックは実行されません。- 通知を受けたら、有効な設定を読み直し、後続の処理を更新します。変更されたキーの一覧それ自体は完全な新しいポリシーではありません。
- 終了時は、所有リソースを解放する前にヌルキューで配信を無効にします。それまではストアとコールバックのコンテキストを生かしておきます。
Appleのヘッダーは、変更キー一覧が空であることを動的ストアサーバーの再起動と定義しています。その場合も関連する状態を更新し、以前の内容に基づく前提を捨ててください。
これは公開macOS APIのアプローチです。Appleのヘッダーは対応する関数をiOS向けの非公開SPIとしているため、同じ購読は公開iOSアプリケーションインターフェースではありません。