Skip to content

Fix Captive Portal Examples for iOS devices #3466

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 0 commits into from

Conversation

bryceschober
Copy link
Contributor

For my experience with an iPad mini running iOS 10.3.2, the captive portal examples just did not work. There were three issues, one known issue (#3225) with a simple temporary workaround, one a major blocking issue and one a minor usability issue but causing major user (me) confusion.

The known issue #3225 is worked around in 36731b3. I'm not expecting that to get pulled unless the fix is delayed. Hopefully that will just get fixed, and you'll cherry-pick only the other commits.

The major blocking issue was that the first "content" of the web page must start with "success" in order to spoof a valid internet connection to iOS devices. This is known to succeed in a <title>, but not consistently elsewhere. Without this spoofing, iOS may automatically disconnect from the access point, and in my case it always did so on the first network-list refresh after connecting.

The minor usability issue that caused major confusion is the name-serving of <anyhost>.local. Per WikiPedia, client are not supposed to refer to ordinary DNS for *.local hosts, which has been reserved for mDNS. Android devices seem to be permissive of the old wild-west style of serving *.local hosts, but iOS and probably OSX are strict. I moved the mDNS responder startup to global setup() for both access point and client mode. Without this, iOS devices will not obtain a route for esp8266.local, as defaulted in the example, until they after they have configured an upstream WiFi connection via http://192.168.4.1 and connected successfully. While this may seem like a minor usability issue, it caused me considerable confusion when implementing my own based on this example, and not realizing that mDNS was a global requirement for serving *.local hostnames, not simply for being a good citizen on some other access point's network.

@bryceschober bryceschober changed the title Fix Captive Portal Example for iOS devices Fix Captive Portal Examples for iOS devices Jul 27, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant