强制门户 API 支持

从 Android 11 Beta 版 2 开始,系统支持 RFC7710bis 和关联的强制门户 API 中所述的部分功能。

该 API 为接入点提供了一种可靠的方法来将其自身标识为强制门户。此外,它还支持接入点向用户发布信息(如会话和信息中心信息)的新用例。

改进了强制门户检测

从 Android 5.0(API 级别 21)开始,Android 设备就已能够检测强制门户,并通知用户他们需要登录网络才能访问互联网。之前是通过对已知目标网站(如 connectivitycheck.gstatic.com)进行明文 HTTP 探测来检测强制门户,如果探测收到 HTTP 重定向,设备就会假定相应的网络是强制门户。这种方法可能不可靠,因为没有标准的网址可供探测,并且强制门户网络可能会错误地允许或阻止(而不是重定向)此类探测。该 API 允许门户提供一个表明要求登录的正信号,以及要登录的网址。

Android 11 支持 DHCP 选项 114,如 RFC7710bis 中所述。我们可能会在未来的更新中添加对路由器通告选项的支持。如果设备在 DHCP 握手期间通过该选项获得强制门户 API 网址,设备会在连接后立即提取 API 内容,按照强制门户 API 要求,如果网络是强制门户,还会提示用户登录。

如果该 API 不可用或未通告任何门户,系统会像以前一样,继续使用 HTTP/HTTPS 探测来检测门户并验证互联网连接。

信息中心发布的信息

Android 11 支持强制门户 API 中定义的 venue-info-url。此网址允许用户在其浏览器中获取有关接入点信息中心的特定于上下文的信息。默认情况下,如果用户选择打开此网址,可以在登录后从通知中打开,或从网络设置中打开。

显示允许用户访问信息中心网址的弹出式窗口的屏幕截图
图 1. 如果网络提供了信息中心网址,系统会弹出一条通知,允许用户访问该网页

显示如何从“网络详情”屏幕中打开网站的屏幕截图
图 2. 用于从“网络详情”屏幕中打开网站的按钮

未来的用例

虽然 Android 11 在发布时仅支持强制门户 API 中的一组基本功能,但在发布后可能会通过 Google Play 系统更新将新功能分发给设备。我们建议网络运营商实现强制门户 API,同时注意未来可能的改进:

  • 会话时间 (seconds-remaining) 当前在默认的设置应用中用来告知用户在门户上还剩多长时间。通过登录网址延长会话的能力 (can-extend-session) 也可以通过该 API 表示,以允许系统通知用户已到期或即将到期的会话。
  • 数据上限 (bytes-remaining) 可以通过该 API 通告,以允许用户跟踪剩余数据。