You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中使用Scandit SDK实现首次相机权限阻止检测的问题求助

React中使用Scandit SDK实现首次相机权限阻止检测的问题求助

大家好,我在使用scandit-sdk-react开发相机扫描功能时碰到了一个权限检测的小问题,卡了好一会儿,想请大家帮忙看看。

我的需求场景

当我打开扫描器组件时,浏览器会弹出相机权限的允许/阻止弹窗,我想要实现的是:如果用户第一次就点击“阻止”权限请求,能立刻触发我自定义的“相机权限被拒绝”弹窗。

当前遇到的问题

我现在实现的逻辑只能在第二次打开扫描器时检测到权限被拒绝:

  • 第一次打开扫描器,选择“阻止”权限,自定义弹窗不会出现;
  • 关闭扫描器后再次打开,才能检测到权限已被拒绝,弹出自定义弹窗。

我目前的代码实现

我是通过navigator.permissions.query来检测相机权限状态,代码如下:

const [cameraDenied, setCameraDenied] = useState(false);

const checkCameraDenied = async () => {
  try {
    const PermissionStatus = await navigator.permissions.query({
      name: "camera",
    });
    if (PermissionStatus.state === "denied") {
      setCameraDenied(true);
    }
  } catch (error) {
    console.log(error);
  }
};

useEffect(() => {
  checkCameraDenied();
}, []);

return (
  <>
    {cameraDenied && (
      <Modal type="cameraDenied" setShowModal={closeScanner} />
    )}
  </>
)

目前的逻辑是组件挂载时执行一次权限检测,但显然第一次用户选择阻止后,这次检测已经完成了,没法实时更新状态。我也在想是不是应该监听权限状态的变化,或者Scandit SDK本身有没有提供权限相关的回调事件?

期待大家的指点,谢谢!

备注:内容来源于stack exchange,提问作者Muhammad Haekal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:13:13