强制门户上的权限弹出窗口

Ray*_*han 6 javascript php mobile-website captivenetwork

我正在创建这个应该由强制门户触发的登陆页面。在我的登陆页面上,有一个按钮可以触发打开<video>元素,然后用于扫描二维码。默认情况下,在访问网络摄像头或设备的摄像头时,浏览器将首先询问用户的许可。所以基本上一切都工作正常并且都在浏览器上。

将其作为强制门户触发的登陆页面后,​​出现了一些不一致的情况。在我同事拥有的大多数 Android 手机上,他们只是默认拒绝该权限。在某些 Android 设备上,会显示请求许可的弹出消息,并且像浏览器版本一样按预期工作。在 IOS 设备上,弹出窗口只是被阻止(不是被拒绝,而是被忽略)我知道它在 IOS 上被忽略,因为错误消息甚至没有显示,就好像强制门户没有对弹出窗口执行任何操作。

我读过几个关于强制门户的论坛,所有这些都让我相信强制门户本质上只是内置浏览器的轻量级版本,它根本没有运行能力window.alert()window.confirm()也没有保存 cookie 的能力。我的“研究”还让我相信强制门户具有操作系统独有的不同行为集,而不是操作系统本身安装的浏览器。

我今天读到的第 1 篇博客,特别是评论部分,提到从 IOS 11.2 开始,强制门户应该已经能够运行window.alert()window.confirm(). 然而,经过测试,情况并非如此。

所以我的问题是,有没有办法解决这个限制,仍然允许用户决定是否允许或拒绝相机访问?

我的“研究”表明,不可能以编程方式重定向强制门户以在浏览器上打开,并且只有少数手机具有带有“在浏览器中打开”选项的强制门户。

有谁知道有什么方法可以拦截正在运行的权限弹出窗口并将其显示为普通的 HTML 元素,然后以编程方式传回用户响应?

提前致谢!:)

Rei*_*ate 0

不可能干扰系统 UI 流程。运行与系统 UI 相关的代码必须严格控制,以不允许用户勒索方案,例如“用手机执行此操作以获得互联网访问权限”。从操作系统供应商的角度来看,强制门户仅涉及同意或拒绝提供商的互联网使用条款。

您必须更改为两层方法,分别提供强制门户和登录页面:

  1. 让用户检查强制门户
  2. 当他们使用浏览器时提供您的着陆页。

为了方便用户并为第二层做好准备,请在您的强制门户中包含指向您的登录页面的链接,并注明“在此处开始使用互联网”之类的内容。另请查看AndroidApple 操作系统中关于DHCP/RA 中的Captive Portal APICaptive-Portal 标识的最新变化。(通过

将受限的强制门户视为设备端方面,将丰富的 UI 登陆页面视为访问互联网的提供商端方面,由于安全原因而无法统一。