This file declares the NEHotspotManager API. The NEHotspotManager API is used to enable or disable
NEHotspotEvaluationProvider and NEHotspotAuthenticationProvider.
When enabled, the API allows the providers to participate in the process of joining Wi-Fi/Hotspot networks.
The providers receive commands to be processed that allow them to participate in the Hotspot Network state machine.
When a network is joined initially, the state machine enters the Evaluating state. In that state, each
NEHotspotEvaluationProvider instance receives a command of type Evaluate. If one or more instances of
NEHotspotEvaluationProvider indicates that it is able to handle the network, the one with the highest
confidence level is chosen before entering the Authenticating state. As an optimization, the first instance to assert
a high confidence wins and the state machine ignores the other instances.
If no NEHotspotEvaluationProvider instances claims the network, the state machine enters the
Authenticated state.
In the Authenticating state, the NEHotspotAuthenticationProvider instance is given a command of type
Authenticate. The instance is expected to perform whatever network processing is required to make the network
available for general network traffic. If the authentication is successful, the instance indicates that with a Success
result. The state machine enters the Authenticated state.
On a network that has been authenticated by a NEHotspotAuthenticationProvider, the state machine
enters the Maintaining state when the network is joined again, and also periodically while the system remains
associated with the network. In the Maintaining state, the NEHotspotAuthenticationProvider instance is
expected to perform whatever network operations are required to determine if the network is still able to
carry general network traffic. If that is the case, the instance returns Success. If not, and authentication is again
required, it returns AuthenticationRequired to cause the state machine to re-enter the Authenticating state.
In the Authenticating state, if the NEHotspotAuthenticationProvider instance determines that it requires
user interaction to proceed, the instance is expected to alert the user via UNUserNotificationCenter, then returns
a result of UIRequired. The state machine enters the PresentingUI state.
In the PresentingUI state, the NEHotspotAuthenticationProvider instance is given a command of type
PresentUI. The instance continues to run in the background in PresentingUI state, and relies on its application
to provide the required information collected from the user to perform the authentication. Once the authentication
is completed successfully, NEHotspotAuthenticationProvider instance returns Success to enter the
Authenticated state.
NEHotspotEvaluationProvider may also receive a FilterScanList command at any time, in addition to an
Evaluate command as described above. In its response, the NEHotspotEvaluationProvider indicates which
of the networks in the scan list it can confidently handle.
This API is part of NetworkExtension.framework.
NEHotspotManager class declares a programmatic interface to enable or disable
NEHotspotEvaluationProvider and NEHotspotAuthenticationProvider.
Members (14)
get · iOS 26.0+
safariDomains
TypeScript
get safariDomains(): Array<string>
Swift declaration
final var safariDomains: [String] { get set }
An array of domain strings.
Containing App can specify these domains when it intends to use SFSafariViewController class for user interaction
with the hotspot service provider's web application hosted during the hotspot authentication. This property allows
maximum 10 domains.
set · iOS 26.0+
safariDomains
TypeScript
set safariDomains(value: Array<string>)
Swift declaration
final var safariDomains: [String] { get set }
An array of domain strings.
Containing App can specify these domains when it intends to use SFSafariViewController class for user interaction
with the hotspot service provider's web application hosted during the hotspot authentication. This property allows
maximum 10 domains.
get · iOS 26.0+
evaluatedSSIDs
TypeScript
get evaluatedSSIDs(): Array<string>
Swift declaration
final var evaluatedSSIDs: [String] { get set }
An array of Wi-Fi SSID strings.
This array represents pre-evaluated Wi-Fi networks. When specified, NEHotspotEvaluationProvider is not
used to evaluate the Wi-Fi network. This property allows maximum two Wi-Fi networks.
The specified Wi-Fi networks must be configured via NEHotspotConfiguration API.
set · iOS 26.0+
evaluatedSSIDs
TypeScript
set evaluatedSSIDs(value: Array<string>)
Swift declaration
final var evaluatedSSIDs: [String] { get set }
An array of Wi-Fi SSID strings.
This array represents pre-evaluated Wi-Fi networks. When specified, NEHotspotEvaluationProvider is not
used to evaluate the Wi-Fi network. This property allows maximum two Wi-Fi networks.
The specified Wi-Fi networks must be configured via NEHotspotConfiguration API.
method · iOS 26.0+
saveToPreferences
TypeScript
saveToPreferences(): Promise<void>
Swift declaration
final func saveToPreferences() async throws
Save the HotspotManager configuration in the Network Extension preferences.
This function throws NEHotspotManagerError value asynchronously on failure.
The configuration must be loaded before calling this function.
method · iOS 26.0+
loadFromPreferences
TypeScript
loadFromPreferences(): Promise<void>
Swift declaration
final func loadFromPreferences() async throws
Load the HotspotManager configuration from the Network Extension preferences.
This function throws NEHotspotManagerError value asynchronously on failure.
method · iOS 26.0+
removeFromPreferences
TypeScript
removeFromPreferences(): Promise<void>
Swift declaration
final func removeFromPreferences() async throws
Remove Hotspot configuration from the Network Extension preferences.
This function throws NEHotspotManagerError value asynchronously on failure.
get · iOS 26.0+
evaluationProviderBundleIdentifier
TypeScript
get evaluationProviderBundleIdentifier(): (string) | null
Swift declaration
final var evaluationProviderBundleIdentifier: String? { get set }
Bundle identifier of the NEHotspotEvaluationProvider
set · iOS 26.0+
evaluationProviderBundleIdentifier
TypeScript
set evaluationProviderBundleIdentifier(value: (string) | null)
Swift declaration
final var evaluationProviderBundleIdentifier: String? { get set }
Bundle identifier of the NEHotspotEvaluationProvider
get · iOS 26.0+
authenticationProviderBundleIdentifier
TypeScript
get authenticationProviderBundleIdentifier(): (string) | null
Swift declaration
final var authenticationProviderBundleIdentifier: String? { get set }
Bundle identifier of the NEHotspotAuthenticationProvider
set · iOS 26.0+
authenticationProviderBundleIdentifier
TypeScript
set authenticationProviderBundleIdentifier(value: (string) | null)
Swift declaration
final var authenticationProviderBundleIdentifier: String? { get set }
Bundle identifier of the NEHotspotAuthenticationProvider
get · iOS 26.0+
shared
TypeScript
static get shared(): NEHotspotManager
Swift declaration
static var shared: NEHotspotManager { get }
Singleton instance of NEHotspotManager class
get · iOS 26.0+
isEnabled
TypeScript
get isEnabled(): boolean
Swift declaration
final var isEnabled: Bool { get set }
A Boolean value that determines enablement status of the configuration.
The providers are started only when if this property is set to true.
set · iOS 26.0+
isEnabled
TypeScript
set isEnabled(value: boolean)
Swift declaration
final var isEnabled: Bool { get set }
A Boolean value that determines enablement status of the configuration.
The providers are started only when if this property is set to true.