首页 文章

ESP8266软AP没有Android marshmallow的互联网访问问题

提问于
浏览
3

我用ESP8266创建了一个软AP,我通过android 6.0 marshmallow mobile连接到它 . 连接后,如果我忽略它并打开浏览器窗口打开我的Web服务器页面或使用自定义构建的应用程序与ESP Web服务器通信,我收到移动通知,说明“Wifi无法访问互联网”,ESP8266不会处理任何请求 . 但是,在我点击该通知中的“保持连接”选项“是”后,一切正常 . 我试图避免用户进行任何手动操作,因此尝试以编程方式修复它 . 是否可以使用ESP作为没有Internet访问的路由器AP并使用Android应用程序连接到它而无需手动处理此通知 .

更新:如果我以编程方式通过自定义构建的应用程序连接到此AP,则不会显示此通知,并且所有与ESP的通信仍被Android阻止 .

ESP代码:

WiFiServer server(80);
  WiFi.softAP("ssid", "password");
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.begin();
  delay(500); 
  Serial.println("Server started");
  Serial.println(WiFi.localIP());

1 回答

  • 0

    Captive Portal与mDNS一起使用 .

    这是example,以下是它的一些亮点:

    const char *softAP_ssid = "ESP_ap";
    const char *softAP_password = "12345678";
    
    /* hostname for mDNS. Should work at least on windows. Try http://esp8266.local */
    const char *myHostname = "esp8266";
    
    // Web server
    ESP8266WebServer server(80);
    
    // DNS server
    const byte DNS_PORT = 53;
    DNSServer dnsServer;
    
    /* Soft AP network parameters */
    IPAddress apIP(192, 168, 4, 1);
    IPAddress netMsk(255, 255, 255, 0);
    
    void setup() {
      /* Setup the DNS server redirecting all the domains to the apIP */  
      dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
      dnsServer.start(DNS_PORT, "*", apIP);
    
      /* Setup web pages: root, wifi config pages, SO captive portal detectors and not found. */
      server.on("/", handleRoot);
      server.on("/generate_204", handleRoot);  //Android captive portal. .
      server.on("/fwlink", handleRoot); //Microsoft captive portal. 
      server.onNotFound ( handleNotFound );
    }
    

相关问题