I am developing an iOS application using NWPathMonitor for network connectivity monitoring. We discovered a reproducible issue where disabling and re-enabling WiFi triggers an unexpected network status sequence.
ENVIRONMENT: iOS Version: 17.x Device: iPhone (various models tested) Network Framework: NWPathMonitor from iOS Network framework
STEPS TO REPRODUCE:
- Device connected to WiFi normally
- Disable WiFi via Settings or Control Center
- Re-enable WiFi via Settings or Control Center
EXPECTED BEHAVIOR: WiFi reconnects and NWPathMonitor reports stable satisfied status
ACTUAL BEHAVIOR:
- T+0s: WiFi re-enables, NWPathMonitor reports path.status = .satisfied
- T+8s: NWPathMonitor unexpectedly reports path.status = .unsatisfied with unsatisfiedReason = .notAvailable
- T+9-10s: NWPathMonitor reports path.status = .satisfied again
- Connection becomes stable afterward
NETWORK PATH TIMELINE: T+0s: satisfied (IPv4: true, DNS: false) T+140ms: satisfied (IPv4: true, DNS: true) T+8.0s: unsatisfied (reason: notAvailable, no interfaces available) T+10.0s: satisfied (IPv4: true, DNS: true)
KEY OBSERVATIONS:
- Timing consistency: unsatisfied event always occurs ~8 seconds after reconnection
- resolution: "Reset Network Settings" eliminates this behavior
TECHNICAL QUESTIONS:
-
What causes the 8-second delayed unsatisfied status after WiFi re-enablement?
-
Is this expected behavior that applications should handle?
-
Why does reset network setting in iPhone fix this issue?