NEHotspotHelper “unresponsive” or “timed out” logs—Are they triggered by .evaluate?

I’m working with the NEHotspotHelper API in my iOS app, and I noticed the following log message in Console:

"(BUNDLE ID ) is using NEHotspotHelper API and it's unresponsive to API's evaluate command. The API gives 45 seconds to 3rd party apps to respond, and then it launches WebSheet to allow user to interact with the portal." I have two different apps that both register a NEHotspotHelper handler:

App A checks for .evaluate and calls createResponse(.unsupportedNetwork) if we don’t manage that particular network. App B registers for hotspot events but does not handle .evaluate at all.

In App A, whenever I see that “unresponsive” or “45 seconds” log, the system eventually launches the standard captive portal WebSheet. In App B, I never see those logs.

I have a few questions:

Are these “unresponsive” logs indeed triggered by the .evaluate command specifically?

In other words, do we only see that 45-second timeout and the subsequent WebSheet message if our app is registered to handle Evaluate but doesn’t respond quickly (or responds with .unsupportedNetwork)?

Is it best practice (or required) to always respond to .evaluate—for example, sending .unsupportedNetwork if we don’t plan on managing the user’s login or captive portal? Does ignoring .evaluate lead to other unexpected behavior or logs?

Should we still explicitly respond to Evaluate with .unsupportedNetwork? Or is it okay to skip Evaluate handling entirely on every app or invocation?

I’d love to confirm whether .evaluate handling is the direct cause of these logs, and how best to avoid the “unresponsive”/“45 seconds” fallback if our app isn’t intended to manage the portal.

Thanks in advance for any insights!

I noticed the following log message in Console:

What is the subsystem and category of that log entry?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

App ([BUNDLEID) is using NEHotspotHelper API and it's unresponsive to API's evaluate command. The API gives 45 seconds to 3rd party apps to respond, and then it launches WebSheet to allow user to interact with the portal.

// Captive state machine started 2024-09-20 19:39:35.722906-0700 0xb2a Default 0x0 50 0 configd: (CaptiveNetworkSupport) [com.apple.captive:Controller] en0: SSID 'Costco Member Wifi' setting interface rank Never (no cache entry)

// Captive evaluation started 2024-09-20 19:39:35.729462-0700 0xb2a Default 0x0 50 0 configd: (CaptiveNetworkSupport) [com.apple.captive:Controller] CNPluginHandler en0: Evaluating 2024-09-20 19:39:35.803915-0700 0xb2a Default 0x0 50 0 configd: (CaptiveNetworkSupport) [com.apple.captive:Controller] en0: Probing 'Costco Member Wifi'

// Builtin completed its evaluation 2024-09-20 19:39:36.666749-0700 0xb2a Default 0x0 50 0 configd: (CaptiveNetworkSupport) [com.apple.captive:Controller] en0: Redirect detected on 'Costco Member Wifi'

// app acknowledged the evaluate command delivery 2024-09-20 19:39:36.669560-0700 0xb2a Default 0x0 50 0 configd: (CaptiveNetworkSupport) [com.apple.captive:Controller] [com.xfinity.digitalhome] acknowledged the command delivery

// evaluation timed out after 45 seconds 2024-09-20 19:40:20.807153-0700 0xb2a Default 0x0 50 0 configd: (CaptiveNetworkSupport) [com.apple.captive:Controller] CNPluginHandler en0: Authenticating (BUILTIN)

NEHotspotHelper “unresponsive” or “timed out” logs—Are they triggered by .evaluate?
 
 
Q