mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-27 21:16:50 +03:00
* Add support for newer mobile OS changes. Took me quite a while to figure this out, but according to this issue (https://github.com/espressif/arduino-esp32/issues/1037), in order to get a captive notification to show or the popup to open, the DNS server must resolve to a public IP. It will not work with a pivate one (e.g. 192.168.4.1). On Android, a notification ("Register with Network") is displayed in top left notification bar. On IOS, the login popup is displayed. * Add support for newer mobile OS changes. Took me quite a while to figure this out, but according to this issue (espressif/arduino-esp32#1037), in order to get a captive notification to show or the popup to open, the DNS server must resolve to a public IP. It will not work with a pivate one (e.g. 192.168.4.1). On Android, a notification ("Register with Network") is displayed in top left notification bar. On IOS, the login popup is displayed.
35 lines
1009 B
C++
35 lines
1009 B
C++
#include <ESP8266WiFi.h>
|
|
#include <DNSServer.h>
|
|
#include <ESP8266WebServer.h>
|
|
|
|
const byte DNS_PORT = 53;
|
|
IPAddress apIP(172, 217, 28, 1);
|
|
DNSServer dnsServer;
|
|
ESP8266WebServer webServer(80);
|
|
|
|
String responseHTML = ""
|
|
"<!DOCTYPE html><html><head><title>CaptivePortal</title></head><body>"
|
|
"<h1>Hello World!</h1><p>This is a captive portal example. All requests will "
|
|
"be redirected here.</p></body></html>";
|
|
|
|
void setup() {
|
|
WiFi.mode(WIFI_AP);
|
|
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
|
|
WiFi.softAP("DNSServer CaptivePortal example");
|
|
|
|
// if DNSServer is started with "*" for domain name, it will reply with
|
|
// provided IP to all DNS request
|
|
dnsServer.start(DNS_PORT, "*", apIP);
|
|
|
|
// replay to all requests with same HTML
|
|
webServer.onNotFound([]() {
|
|
webServer.send(200, "text/html", responseHTML);
|
|
});
|
|
webServer.begin();
|
|
}
|
|
|
|
void loop() {
|
|
dnsServer.processNextRequest();
|
|
webServer.handleClient();
|
|
}
|