View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • トランスクリプト
  • コード
  • NetworkExtensionによるネットワークトラフィックのフィルタリングとトンネル

    NetworkExtensionフレームワークのAPIについて説明します。これらのAPIは、システムのコアネットワーク機能を拡張するパワーと柔軟性をアプリに提供し、ネットワークコンテンツフィルタの導入、VPNの構成と管理などを行うことができます。iOS、iPadOSおよびmacOS26では、ホスト名だけでなく、URL全体を使用してトラフィックの決定を行う強力なコンテンツフィルタを作成できるようになりました。もちろん、プライバシーとセキュリティも損ないません。このセッションではまず、ネットワークリレーやVPNなど、NetworkExtensionフレームワークの重要なユースケースを簡単に紹介します。次に、個人情報取得やプライバシーパスなど、新しいURLフィルタAPIとその主要コンポーネントについて詳しく説明します。

    関連する章

    • 0:00 - ようこそ
    • 1:48 - NetworkExtensionの紹介
    • 3:21 - リモートリソースへのアクセス
    • 8:40 - コンテンツのフィルタリング
    • 10:54 - URLフィルタの作成

    リソース

    • Filtering traffic by URL
    • NEHotspotManager
    • Network Extension
    • NEURLFilterManager
    • PIRService
    • TN3120: Expected use cases for Network Extension packet tunnel providers
    • TN3165: Packet Filter is not API
    • verdict(for:)
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC25

    • 開発プロセスへのプライバシーの統合

    WWDC19

    • 最新のMacのためのNetwork Extension
  • このビデオを検索

    こんにちは Maria Alice Dos Santosです AppleのInternet Technologies チームに所属しています ここでは Network Extension フレームワークについてと iOSおよびmacOS 26での最新の 改善点についてお話しします

    Network Extensionは Appleプラットフォームの ネットワーク機能の拡張やカスタマイズを 行うアプリを構築するための 様々なAPIスイートを提供する フレームワークです

    Network Extensionアプリはネットワーク スタック全体でシームレスに機能し Networkフレームワーク CFNetwork WebKitおよびSockets APIと 緊密に統合されているほか ルーティング トラフィックポリシー 様々な 種類のシステム管理などシステムレベルの コンポーネントとも統合されています これにより Network Extensionでは ネットワークパフォーマンスと セキュリティに関して 最適化された形で 必要な機能を実現できます

    Network Extensionは 強力なフレームワークであり システム全体のネットワークを 変更できます アプリを他のアプリやシステムと 安定的に連携させるには 構築するアプリの種類に適した APIを選択することが不可欠です

    このセッションでは Network Extensionフレームワークで 作成できる様々なアプリを紹介し リレーやVPNを使用してリモート リソースにアクセスするアプリを 作成する方法を説明します また Network Extensionを使用して コンテンツフィルタを作成する方法を説明し iOSおよびmacOS 26でURLベースの フィルタを作成する新しい方法も紹介します Network Extensionフレームワークは アプリのネットワーク機能の カスタマイズと拡張を行うための 様々な方法をサポートします

    iOSでは Wi-Fi Management APIおよび Hotspots APIを使用することでアプリで Wi-Fi設定の構成やWi-Fiホットスポット とのやり取りを行うことができます iOS 26の新しいNEHotspotHelper 拡張機能APIも含まれています

    iOSアプリではLocal Push APIも使用できます これは クルーズ船や病院など Apple Push Notification serviceに アクセスできないネットワークで 使用するアプリ向けです これにより 制限のあるネットワーク上で テキストメッセージやVoIP通話などの 機能をサポートできます

    DNS Configuration and Proxy APIを 使用すると DNSトラフィックを攻撃から保護する セキュリティアプリを構築できます DNS構成をインストールし この組み込まれた暗号化DNS プロトコルを使用するか 独自のセキュリティチャネル経由で プロキシDNSトラフィックを使用できます

    MacアプリではTransparent Proxy APIを使用して 例えば 特定のWebサイトのトラフィックを 認証と承認のための クラウドベースのセキュリティサービスに 迂回させることができます また ユーザーがリモートリソースに 安全にアクセスできるアプリや ネットワーク上でユーザーがアクセスする コンテンツを安全かつ密かに フィルタ処理して ユーザーを保護する アプリを構築することもできます

    セキュアなリモートアクセスは 幅広いカテゴリであり ユーザーが外部から内部システムに 安全に接続するための 様々な方法や デバイスからリモートサーバへの トラフィックをトンネリングして 安全でないネットワーク上の個人の トラフィックを保護する方法が含まれます Network Extensionでは 主に2つの アプローチを検討します ネットワークリレーと IPベースのVPNです トンネリングするトラフィックの 種類に応じて 最も適したものを使用してください TCPまたはUDPトラフィックを トンネリングして特定のアプリに アクセスする場合は 従来のVPNの代わりに ネットワークリレーを検討します メールやコラボレーションなど クラウドでホストされるエンタープライズ アプリでは リレーが最適です MASQUEプロトコルは 安全なプロキシを実現し 最適化されたパフォーマンスを提供します これは最新のクラウド環境に 簡単に統合できます また プラットフォームにはリレーの サポートが組み込まれており リレーを利用するために独自の拡張機能を 構築する必要がありません NERelayManager APIを使用するか MDMサーバの構成プロファイルを使用して リレー設定と認証を構成するだけで済みます IPトラフィックをトンネリングする場合は IPベースのVPNを使用します 例えば 企業で IPベースのVPNを使用すると 社内ネットワークを従業員に拡張でき 従業員は実際にオフィスにいるかのように ネットワークにフルアクセスできます このソリューションは社内ネットワークへの 永続的または完全な トンネルアクセスを必要とする 長期的に信頼されている従業員に最適です

    または 厳格なネットワークセキュリティ ポリシーがある規制の厳しい組織では 管理対象デバイスからのすべての トラフィックを社内ネットワークを通じて 送信する必要がある場合があります

    また 安全でないネットワークで VPNを使ってトラフィックを保護し プライバシーと匿名性を 保護することもできます

    IPベースのVPNトンネルを作成するには NEVPNManager APIを使用して 組み込みプロトコルのIKEv2とIPsecの いずれかを活用するか NEPacketTunnelProviderを使用して 独自のカスタムトンネリング プロトコルを実装します IPベースのVPNを作成する場合 どのトラフィックをトンネリングするか どのルートを含めるか 除外するかを 実装によってシステムに伝えます macOSでは 管理者または 別のプロセスによって アプリ外でルーティング テーブルを変更できます より正確なルートの場合 VPNのルートに 干渉する可能性があります Network Extensionを使用すると アプリでVPNルートが優先され 常に選択されるように強制できます Network Extensionを使用すると アプリでの トンネルルーティング要件の 管理が簡単になります スプリットトンネルVPNの場合 enforceRoutesオプションを有効にして 含めるルートと除外するルートの 両方を強制できます フルトンネルVPNの場合は includeAllNetworksオプションを有効化し すべてのトラフィックがトンネルを通じて ルーティングされるよう強制できます このオプションを有効にすると 指定された excludedRoutesはすべて無効になります これらのオプションはどちらも 構成可能な例外をサポートしており システム定義のトラフィックセットを トンネル外に出すことを許可できるため VPNの実行中に重要なサービスが 想定通りに機能します 例えば AirDropやAirPlayなどの ローカルネットワークサービスに トンネルを回避させる場合 excludeLocalNetworksを 有効にします または 他の例外を有効にすると 通話やメッセージング Apple Push Notification service およびデバイス通信などのサービスが トンネルを回避するのを許可できます これらの例外のほとんどは デフォルトで有効になっていますが セキュリティのニーズに合わせて カスタマイズできます

    Network ExtensionはVPNアプリを 構築するためのサポートAPIです 他のネットワークコンポーネントやシステム コンポーネントとシームレスに連携します それ以外のものを使ってVPNアプリを 構築することはお勧めしません パケットフィルタの使用やMacのルーティング テーブルの直接的な変更は避けてください これはサポートされておらず システムや 他のアプリのトラフィックフィルタ処理や ルーティングの規則と 衝突するリスクがあります 現在VPNアプリでNetwork Extensionを 使用していない場合は できるだけ早く 移行する必要があります これにより アプリでは システムとの互換性に加え AirDropやMac Virtual Displayや Xcodeなどの機能 Sidecarなどの連携機能といった ユーザーが期待している すべての主要な機能との互換性を 維持できます NEPacketTunnelProviderは IPトラフィックのトンネリングにのみ使用し 他の目的に使用することはお勧めしません NEPacketTunnelProviderは IP層で動作し プロキシDNS要求やコンテンツフィルタなど 他の処理を行うために必要な フローレベルまたはアプリケーション レベルのメタデータを受信しません コンテンツフィルタが目的の場合 次に説明するContent Filter APIを 使用してください Content Filter APIを使用すると デバイス上のトラフィックを詳細に調べ トラフィックがネットワーク スタックを通過する際に 監視やフィルタ処理の判断を 行うことができます 一般的なユースケースとして パーソナルファイアウォールがあり トラフィックフローを検査して 個人のデバイスに対して危険であると 見なされるトラフィックをブロックします また 管理対象デバイス用の エンタープライズトラフィック監視アプリは インバウンドとアウトバウンドのすべての ネットワークトラフィックを監視するもので 高い安全性が求められる環境で 働く従業員に適しています

    目的のトラフィックを取得するには 一方または両方のコンテンツフィルタ プロバイダのサブクラスを作成します NEFilterDataProviderは TCPフローとUDPフローのほか ICMPなどの他のIPプロトコル トラフィックを提供します

    Macアプリの場合 NEFilterPacketProviderのサブクラスで レイヤー2パケットを取得します

    フィルタプロバイダは トラフィックを変更できませんが フローを許可すべきか拒否すべきかの判断を システムに提供します iOSシステム全体のコンテンツフィルタは 監視対象デバイスでのみサポートされます

    NEFilterDataProviderと NEFilterPacketProviderを使用した コンテンツフィルタはアプリで トラフィックフローに基づいて または パケットインスペクションを通じて コンテンツをフィルタ処理するのに最適です ただし URLなどアプリケーションレベルの メタデータに基づくフィルタ処理が 必要な場合があります 従来のコンテンツフィルタでは アプリは このHTTPS要求のホストと ポートなどのトラフィックレベルの 情報に基づいてフィルタ処理の 判断を行うことができます

    ただし アプリによってはサイト全体を ブロックするのではなく特定のリソースを フィルタ処理する場合があります HTTPS要求は暗号化されているため 従来のコンテンツフィルタでは 要求された特定のリソースや URLのクエリパラメータなど 正確なフィルタ処理の判断に必要な URL要求の詳細にアクセスできません iOS 26以降では 新しいタイプの フィルタであるURLフィルタを作成できます これは完全なURLに基づいてコンテンツ フィルタ処理の判断を行います Network ExtensionのURLフィルタでは システム全体のHTTPおよびHTTPS要求を フィルタ処理でき 要求に含まれる 完全なURLに対して照合を行います このテクノロジーを使用すると インターネット上の特定のリソースを ブロックするアプリを構築できます 例えば 有害なWebサイトから子供を守る ペアレンタルコントロールアプリを 構築できます 学校向けのアプリでは フィルタを使って 生徒がソーシャルメディア ギャンブル その他のセンシティブなコンテンツを含む 様々なWebサイトにアクセスするのを 防ぐことができます また 企業では 仕事に関係のない コンテンツをブロックできます

    Appleはプライバシーは基本的な 人権であると信じています URLフィルタでは最先端の 暗号化を使用しており プライバシーを損なうことなく 完全なURLに基づいて フィルタ処理の判断を効果的に 行うアプリを構築できます URLによって一意の識別子や閲覧履歴など 重要な情報が漏洩する可能性があります Network Extensionは 完全なURLに基づき 正確なフィルタ処理の判断を行う コンテンツフィルタを構築する ために作られています ただし URLの内容はアプリに公開されず バックエンドサーバへの データベースクエリはすべて匿名化され プライバシーが保護されます バックエンドサーバのチェーン全体 つまり Appleとデベロッパのどちらのサーバも いずれのコンテンツおよび個人を 特定する情報にもアクセスできません URLフィルタ処理は ブロックする 必要があるURLが含まれる URLデータセットを使用して実行されます URL検索用のデバイス上のプレフィルタ およびデバイス外のデータベースサーバは デベロッパが提供します システムはデータセットを使いデベロッパに 代わってフィルタ処理全体を実行します アプリはフィルタ処理パスには関与せず トラフィックにアクセスできません システムはパフォーマンス向上のために デバイス上でプレフィルタを実行し 最終的な判断のためにデバイス外の データベース検索を実施できます デバイス外のデータベース処理は すべて保護されており コンテンツおよび個人の プライバシーが保護されます 強力なプライバシー保護を備えた URLフィルタは 管理対象デバイスと非管理対象デバイスの どちらにも使用できます この機能の仕組みを説明する前に 構成要素となるテクノロジーを紹介します URLフィルタは4つのテクノロジーに 基づいています つまり ブルームフィルタ プライベート情報検索 プライバシーパス Oblivious HTTPリレーです

    ブルームフィルタから説明します

    URLフィルタの場合 Network Extensionは ブロックするURLを含む URLデータセットに基づいて作成された ブルームフィルタを使用します ブルームフィルタは事前定義された データセットから構築され その際に複数のハッシュ関数を使用して セット内の各要素をハッシュ化し 固定サイズのビット配列内の 対応するビットを設定します 構築されたら そのブルーム フィルタを使用して 要素がセットのメンバーか どうかをテストできます ブルームフィルタでは 検出漏れはありませんが 誤検知が起きる可能性があります

    ブルームフィルタは簡易検査用の プレフィルタとして使用します 一致が見つからない場合 確認対象のURLはURLデータセットに 含まれておらず 追加の確認を行うことなく すぐに許可されます 一致が見つかった場合 誤検知の可能性があるため 照合結果は確定的ではありません 決定的な判断に達するには デバイス外のデータベースの 検索などさらに確認が必要です

    ブルームフィルタをプレフィルタに使うと デバイス外のデータベースの検索が 大幅に減り パフォーマンスが向上します

    2つ目の重要なテクノロジーは プライベート情報検索です プライベート情報検索 すなわちPIRを使うと クライアントがキーワードと値の データベースをホストするサーバに対して クエリキーワードと検索結果を サーバに公開せずに データベース検索を実行できます これは準同型暗号を使用して 暗号化されたデータに対する計算を行い プライベート情報検索サーバでの 暗号化されたクエリに対する データベース検索を実現しています そのため サーバはクエリや 応答の内容にアクセスできません

    その仕組みはこうです デバイス上のクライアントが 暗号化キーを生成し デバイス上に非公開で保持します これを使用して サーバに送信される すべてのクエリを暗号化します 次にサーバは 暗号化されたクエリを 使用してデータベース検索を実行します 処理中にサーバはクエリを復号できません サーバは暗号化された応答を クライアントに送信します クライアントは応答を受信して デバイス上で復号します クライアントを除きサーバであっても サーバの応答を復号できせん その後でクライアントは 検索結果を使用します プライベート情報検索は Live Caller ID Lookup APIなど 多くのプライバシー保護機能で すでに使用されているテクノロジーです URLフィルタ処理の場合 プライベート情報検索サーバは 暗号化されたクエリを使用して URL検索を実行するので サーバは どのURLが要求されているか どのような結果が返されるかを知ることなく フィルタ機能を提供できます 3つ目の重要なテクノロジーは プライバシーパスです プライベート情報検索では サーバに対する匿名認証のために プライバシーパスを使用します これにより サーバは個々の要求履歴を トラッキングすることなく 認証済みで許可済みのデバイスからの クエリにのみ応答できます 各デバイスは初期認証を通過して 長期的な認証情報を取得します この認証情報を使用することで 暗号化を使用してブラインド署名 された一連のトークンを プライバシーパス発行者から取得できます デバイスはこれらのトークンを使用し 詳細を伝えることなく サーバで認証できます 最後の重要なテクノロジーは Oblivious HTTPリレーです Oblivious HTTPリレーは プライバシーを保護するプロキシであり 元のIPアドレスを隠し サーバが長期的に要求を トラッキングしたり結び付けたりするのを 防ぐのに役立ちます これはクライアント リレー ゲートウェイの 3つのエンティティで構成されています クライアントはゲートウェイの 公開キーを使用して要求を暗号化します さらに 暗号化された要求を リレーに送信します リレーは受信した要求から クライアントのIPアドレスを削除し 要求をゲートウェイに転送します ゲートウェイは要求を復号し ターゲットリソースに送信します リレーは要求の内容について 何も知ることができず ゲートウェイとターゲットリソースは トラフィックがどこから送信されたかを 知ることができません

    以上 4つのテクノロジーを紹介しました 次に ソリューションを設定する方法と URLフィルタの仕組みを説明します

    URLフィルタアプリがデバイスに インストールされているとします このアプリは Network Extensionや ブルームフィルタとしてのURLデータセット また URLデータベースを提供します URLデータベースはURL検索を提供する プライベート情報検索サーバにあります

    サーバ設定には匿名認証用の プライバシーパス発行者も 含まれます

    URLフィルタアプリは プライベート情報検索サーバへの アクセス先を Network Extensionに伝えます またアプリは ブルームフィルタを デバイスに取得する 新しいApp Extensionも実装します

    すべてのデータベースクエリと応答の やり取りは Appleがホストする Oblivious HTTPリレーを経由します つまり トラフィックを サーバに転送するためにデベロッパが Oblivious HTTPゲートウェイを ホストすることを意味します

    URLフィルタ処理のための Oblivious HTTPを使用した要求は AppleがホストするOblivious HTTPリレーを経由します

    この機能を使用するには ドキュメント内にある リクエストフォームを使用して 申請する必要があります Appleはサーバ構成がOblivious HTTP リレーに適しているかを検証して 承認を行います TestFlight、Ad Hoc、Developer IDまたは エンタープライズ用署名付きビルドの場合 App Storeでアプリを配信する前に この手続きを完了する必要があります 開発用署名付きビルドは この要件の適用外で フィルタ処理アプリのビルドと テストをすぐに開始できます

    すべてのピースが揃ったので例を通じて URLフィルタ処理の仕組みを説明します URLフィルタ処理は システムのみが実行します アプリやApp Extensionは このパスに関与しません システムは すべてのURL要求を調べ 各URLをデータセットと照合します この例では ブラウザが example.comにある特定のリソースへの URL要求を開始します システムは要求されたURLを最初に ブルームフィルタと照合します ブルームフィルタで一致が 見つからなかった場合 このURLはデータセットにありません URLは許可され ブラウザが HTTP要求を続行します

    次にブラウザがexample.comにある 別のリソースに関する 別のURL要求を開始します 今度はブルームフィルタで 一致が見つかりました 誤検知の可能性があるため この一致はURLがデータセットに含まれて いる可能性を示しているにすぎません この場合 システムは暗号化されたクエリを デベロッパのプライベート情報 検索サーバに送信して デバイス外の検索を実行します サーバでは 受信した 暗号化済みクエリを使用して データベース検索を実行し 照合結果を得ます サーバはクエリの内容や返される 内容を知ることはできません サーバは照合結果を暗号化して 応答を返します

    デバイス上のシステムが応答を復号します 返された結果が一致を示している場合 URLは拒否され ブラウザの要求は失敗します

    Network ExtensionのURLフィルタ処理は システム全体で実施され WebKitやURLSessionなどAppleの ネットワークAPIを介して送信された すべてのHTTP要求を確認します ただし これらのネットワークAPIを 使用していないアプリの場合 HTTPトラフィックはシステムによって 自動的に確認されません WebKitやURLSessionを使用しない Webブラウザや アプリを構築する場合 Participation APIを使用して 送信前に すべてのURL要求を確認してください 要求するURLを指定してNEURLFilter. verdict(for: url)を呼び出し URLが拒否された場合は 要求が失敗となり 返された判断に従います URLフィルタの仕組みがわかったので 作成する手順を説明します プライベート情報検索サーバを設定し ブルームフィルタを作成します 次に URLフィルタアプリと App Extensionをビルドします

    プライベート情報検索サーバの 設定から始めます サンプルコードから始めましょう これはサンプルのプライベート 情報検索サーバを提供します プロジェクトリポジトリに プライベート情報検索サーバと プライバシーパス発行者の サンプル実装があります URLフィルタ処理用にサーバを カスタマイズするには 特定の名前形式で ユースケースを作成します ユースケース名には プレフィックスとしての アプリのバンドル識別子に続いて 文字列url.filteringが必要です

    プライベート情報検索サーバはデータ レコードをキーと値の形式で保存します Network ExtensionのURLフィルタでは それに応じてデータセットを書式設定します 各レコードについて キーとしてURL文字列を設定し 値は整数1に設定します 2番目のステップはブルーム フィルタをビルドすることです URLデータセットを使用して ブルームフィルタをビルドします このとき 指定のハッシュ関数と メソッドを使用します NEURLFilterControlProvider API用に ドキュメントが用意されています

    データセットがどの程度頻繁に 変更されるかに応じて ブルームフィルタをデバイスに 配信する方法と 更新する頻度を決定します ほとんど変更されない 静的なデータセットの場合 ブルームフィルタをApp Bundleに含め App Extensionを通じてApp Bundleリソース からそのブルームフィルタを取得します 以降のブルームフィルタの更新は アプリの更新に含めることができます 頻繁に変更される動的なデータセットの場合 定期的に取得するように システムを構成します システムが取得を指示すると App Extensionがサーバからブルーム フィルタをダウンロードできます 次のステップはURLフィルタ アプリのビルドです 新しいNetwork Extension URLフィルタ プロバイダエンタイトルメントを アプリに追加します これにより URL Filter APIを使用できます アプリで NEURLFilterManager APIを使用し 構成を作成してURLフィルタを管理します Network Extensionフレームワークを インポートし NEURLFilterManagerの共有 シングルトンインスタンスを使用します URLフィルタは数個の手順で 構成して有効にできます まず 必要に応じてURLフィルタ構成の 最新のスナップショットを ディスクから読み込みます さらに 構成の中に必須属性を設定し プライベート情報検索サーバに 到達してやり取りする方法を システムに伝えます

    その他のオプションパラメータを設定して URLフィルタを微調整します

    最後に URLフィルタの構成を 有効にして保存します これでURLフィルタが有効になります

    URLフィルタはコンシューマと エンタープライズの両方に導入できます URLフィルタアプリを大規模に エンタープライズ導入する場合 モバイルデバイス管理を介して URLフィルタ構成プロファイルを 管理対象デバイスにプッシュします 既存のコンテンツフィルタペイロードは URLフィルタ機能を有効に するための新しいキーと URLFilterParametersを設定する ための新しい辞書をサポートします MDM URLフィルタ構成には デバイスの監視が必要です

    次のステップはURLフィルタの App Extensionのビルドです App Extensionを作成するには Xcodeの新しいURLフィルタアプリ Extensionテンプレートを使用します NEURLFilterControlProvider プロトコルをApp Extensionとして実装します このプロトコルにより App Extensionで ブルームフィルタをデバイスに取得できます Network Extensionフレームワークを インポートし NEURLFilterControlProvider プロトコルを実装します fetchPrefilter関数の実装が システムによって呼び出され 設定した間隔に従って ブルームフィルタを取得します 実装において ブルームフィルタを取得し システムに返します 実装でブルームフィルタの データを取得するには App Bundleリソースから取得するか サーバからダウンロードします App StoreやTestFlightに アプリを提出する前に 機能リクエストが提出され 承認済みであることを確認し 要求がOblivious HTTPゲートウェイに 到達するようにしておきます Network Extensionは非常に 強力なフレームワークであり トラフィックなどのトンネリングや フィルタ処理を実現できます Network Extensionの使い方をまとめます 必要な機能を提供し システムと 適切に連携するアプリを 構築できるよう適切なAPIを使用します TCPおよびUDPトラフィックのセキュアな リモートアクセスにはネットワークリレーを使い VPNソリューションの構築には Network Extensionを使用します Network ExtensionのURL Filter APIで 強力なコンテンツフィルタを作成します 手始めにサーバとアプリの サンプルを確認してください ご視聴ありがとうございました

    • 22:15 - Use participation API to check URLs before sending requests

      // Use participation API to check URLs before sending requests
      
      import NetworkExtension
      
      func checkURL(url: URL) async throws -> Bool {
        var passRequest : Bool = true
      
        let verdict = await NEURLFilter.verdict(for: url)
      
        if verdict == .deny {
          passRequest = false
        }
        return passRequest
      }
    • 25:01 - Configure and manage URL Filter

      // Configure and manage URL Filter
      
      import NetworkExtension
      
      let manager = NEURLFilterManager.shared
      
      try await manager.loadFromPreferences()
      
      try manager.setConfiguration(
          pirServerURL: URL(string:"https://pir.example.com")!,
          pirPrivacyPassIssuerURL: URL(string:"https://privacypass.example.com")!,
          pirAuthenticationToken: "1234",
          controlProviderBundleIdentifier: "com.example.myURLFilter.extension")
      
      manager.prefilterFetchInterval = 86400 // fetch every 1 day
      manager.shouldFailClosed = false
      manager.localizedDescription = "Alice's URL Filter"
      manager.isEnabled = true
      
      try await manager.saveToPreferences()
    • 26:41 - Implement NEURLFilterControlProvider protocol

      // Implement NEURLFilterControlProvider protocol
      
      import NetworkExtension
      
      class URLFilterControlProvider: NEURLFilterControlProvider {
      
        func fetchPrefilter() async throws -> NEURLFilterPrefilter? {
              
          // Fetch your Bloom filters data from your app bundle or from your server
          let data = NEURLFilterPrefilter.PrefilterData.temporaryFilepath(fileURL)
          let result = NEURLFilterPrefilter(data: data,
                                            bitCount: numberOfBits,
                                            hashCount: numberOfHashes,
                                            murmurSeed: murmurSeed)
          return result
        }
      }

Developer Footer

  • ビデオ
  • WWDC25
  • NetworkExtensionによるネットワークトラフィックのフィルタリングとトンネル
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン