I'm working with Apple's SimpleURLFilter sample project and consistently encountering an error when trying to implement the URL filter.
Here are the details: Setup:
- Downloaded the official SimpleURLFilter sample project from Apple
- Set the developer team for both targets (main app and extension)
- Built and ran the PIR server on my laptop using Docker as per the sample instructions
- Built the iOS project on my iPhone running iOS 26.0.1
- Server is accessible at my Mac's IP address on port 8080
Configuration:
- PIR Server URL: http://[my-mac-ip]:8080
- Authentication Token: AAAA (as specified in service-config.json)
- Privacy Pass Issuer URL: (left empty)
- Fail Closed: enabled
Code Changes: The only modifications I made were:
- Updated bundle identifiers to include my team identifier
- Updated PIR server's service-config.json to match: com.example.apple-samplecode.SimpleURLFilter[TEAM_ID].url.filtering
- Modified URLFilterControlProvider.swift:
- Added existingPrefilterTag: String? parameter to fetchPrefilter() method
- Added tag: "bloom_filter" parameter to NEURLFilterPrefilter initializer
Issue: After configuring the filter and entering my passcode in Settings, I consistently see: Received filter status change: <FilterStatus: 'starting'> Received filter status change: <FilterStatus: 'stopped' errorMessage: 'The operation couldn't be completed. (NetworkExtension.NEURLFilterManager.Error error 9.)'> Questions:
- What does NEURLFilterManager.Error error 9 specifically indicate?
- Could the URLFilterControlProvider modifications be causing this issue?
- Are there debugging steps to get more detailed error information?
Any guidance would be appreciated!
What does NEURLFilterManager.Error error 9 specifically indicate?
That’d be .serverSetupIncomplete.
print(NEURLFilterManager.Error.serverSetupIncomplete.rawValue)
// -> 9
That error has a bunch of potential causes. I’d expect to find more details about the specific problem in the system log. Look for log entries in the com.apple.networkextension subsystem. It’s possible you’ll need to install the VPN (Network Extension) debug profile to see the entry. Download that from our Bug Reporting > Profiles and Logs page.
For lots of hints and tips on how to use the system log effectively, see Your Friend the System Log.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"