Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Permissions API

Permissions API

作者头像
mmzhou
发布于 2018-08-01 10:50:38
发布于 2018-08-01 10:50:38
99200
代码可运行
举报
文章被收录于专栏:前端小作坊前端小作坊
运行总次数:0
代码可运行

Permissions API

这篇文章翻译自HTML5ROCKS的Permissions API

如果你以前使用过Geolocation API,那么你很可能希望可以检查自己是否有权限来使用Geolocation API并且不展示确认框。这个简单的愿望目前是不可能的。你必须要先请求获取目前的位置,然后或许能拿到位置,这表示你有权限。也有可能弹出一个确认框给用户确认是否给权限。

并不是所有的API都是这样工作的。Notification API提供了Notification.permission来让你可以检查自己是否有权限。

Web平台的API一直在发展,现在有必要提供一个标准的方法来让开发者统一检查权限。而不是记住每种API的使用方法。Chrome 43版本提供了Permision API,这个APi提供了统一的方法来检查权限状态。

permissions.query()

permissions.query()方法可以用来检查是否有权限。它会返回三种状态:granted(有权限)、denied(没有权限)或者prompt(需要用户确认)。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Check for Geolocation API permissions
navigator.permissions.query({name:'geolocation'}).then(function(permissionStatus)
{
    console.log('geolocation permission status is ', permissionStatus.status);
    permissionStatus.onchange = function() {
        console.log('geolocation permission status has changed to ', this.status);
    };
});

query方法的输入是一个PermissionDescripter对象,你可以在这个对象上定义权限的名字。方法的返回结果是一个Promise对象,用于异步获取PermissionStatus对象。你可以检查这个对象的status值来检查权限。你也可以监听permissionStatus.onchange事件,来处理权限状态改变的情况。

支持的PermissionDescriptors

在上面的样例中,我们知道了如何检查Geolocation API的权限,所用的权限描述对象为:{name:'geolocation'}

Notification API的权限描述对象也是类似的,只需要一个name属性:{name:'notifications'}

Pushmidi API则有一个各自特有的额外参数。

对于Push API的权限检查,你可以提供一个userVisible参数。这个参数表明了你是否想让每条信息都显示一个通知,如果不显示通知则便是静默处理每条push信息(目前Chrome仅仅支持有通知的push信息)。你可以这样使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
navigator.permissions.query({name:'push', userVisible:true})

Midi API有一个sysex参数。这个参数表明了你是否需要系统排除信息。Midi的权限检查方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
navigator.permissions.query({name:'midi', sysex:true})

请求获取权限

对用户来说,请求获取指定API权限的方法都各不相同。例如,Geolocation API会在你调用getCurrentPosition()时弹出一个确认框给用户。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
navigator.geolocation.getCurrentPosition(function(position) {
    console.log('Geolocation permissions granted');
    console.log('Latitude:' + position.coords.latitude);
    console.log('Longitude:' + position.coords.longitude);
});

在调用Notification.requestPermission()方法时也会弹出一个确认框给用户,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Notification.requestPermission(function(result) {
    if (result === 'denied') {
        console.log('Permission wasn\'t granted. Allow a retry.');
        return;
    } else if (result === 'default') {
        console.log('The permission request was dismissed.');
        return;
    }
    console.log('Permission was granted for notifications');
});

这里想强调的是:Permission API允许你使用一个统一的方法来检测一系列Web API的权限。这带来的巨大优势就是:允许你只给那些没有确认过权限的用户弹出确认框。这将大大提高用户的体验。你可以在你有权限时充分利用这些API打造更棒的体验。

这里有一系列使用样例

浏览器支持

Chrome是以第一个实现这个API的浏览器,Mozilla正在计划提供这个功能,并且Microsoft也对这个API感兴趣。

已知的问题

Geolocation API在用户忽略权限确认框后,再次请求不会显示确认框。并且这是Permission状态值为prompt。这显然是不合理的。[crbug.com/476509]

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
腾讯云携手华筑通,打造首个建筑行业全周期区块链产融平台
腾讯云将为华筑通供应链金融平台提供区块链技术支持,双方将携手打造首个服务建筑行业全项目周期的区块链产融平台,为行业上下游提供更高效率的供应链金融服务。
bengbengsu
2022/04/26
9440
腾讯云携手华筑通,打造首个建筑行业全周期区块链产融平台
活动报名 | “一键上链” -- 手把手教你快速构建TBaaS链上应用
在 Web3浪潮下,区块链技术再次被大家所关注。不难发现,近年来区块链技术在政务、金融、司法存证、教育和医疗等重点领域都发挥着重要作用,从助力产业数字化转型到合同签约数据存证走进千家万户,区块链技术为产业应用落地注入了新的动力。 近期,腾讯发布《全真互联白皮书》首次对外诠释解读了“全真互联”的概念,其中,区块链技术作为可信协议的支撑技术是构建全真互联的关键。 那么,作为数实融合关键支撑技术之一的区块链技术到底是什么?产品如何使用? 如何解决区块链底层模块复杂难以上手的问题?是否有轻量化、低成本、可降低开发
bengbengsu
2022/11/15
1K0
活动报名 | “一键上链” -- 手把手教你快速构建TBaaS链上应用
入选国家级权威榜单,腾讯云TBaaS“领跑”区块链技术金融应用
近日,2021年度全国金融领域企业标准“领跑者”榜单公布,腾讯云成功上榜“金融分布式账本技术应用”领域企业标准“领跑者”。这意味着腾讯云区块链服务平台TBaaS在金融科技行业应用创新与标准化建设方面已处于行业领先地位。
bengbengsu
2022/04/27
6940
入选国家级权威榜单,腾讯云TBaaS“领跑”区块链技术金融应用
案例分享|TBaaS链上应用构建实战分享
作为数实融合关键支撑技术之一的区块链技术到底是什么?产品如何使用? 如何解决区块链底层模块复杂难以上手的问题?是否有轻量化、低成本、可降低开发门槛的工具? 近期,腾讯云区块链联合CSDN举办了“一键上链”产品实战分享会,围绕TBaaS产品与技术,生动讲解了如何轻松构建区块链应用,围绕开发区块链应用面临的挑战等行业热点话题,深度解析了TBaaS长安链的应用架构与核心特性。 戳👇视频快速了解TBaaS“一键上链” TBaaS轻松构建企业级区块链应用 开发区块链应用依然面临着部署难,用链难,运维难等多个难
bengbengsu
2022/11/23
1.1K0
案例分享|TBaaS链上应用构建实战分享
腾讯云区块链TBaaS参与Hong Kong Blockchain Week发表演讲
快讯:Hyperledger:Blockchain as a Service 论坛中国香港站,腾讯云区块链TBaaS技术负责人李亮主要阐述了BaaS对于客户业务转型的重要性,同时阐述了目前区块链使用过程中的一些挑战。
腾讯云区块链
2019/03/13
17.2K0
腾讯云区块链白皮书
导语:由腾讯云、腾讯云研究院、腾讯TEG计费平台部、腾讯“互联网+”创新研究中心与腾讯开源共同发布的《腾讯云区块链TBaaS产品白皮书》在2018年3月已推出。 详情页面:https://cloud.tencent.com/product/tbaas
Nancy WU
2018/07/27
8.9K1
破解区块链应用开发难题,开发者该如何抓住区块链红利?
作为数字经济时代重要的底层支撑技术之一,区块链在推动数字经济发展和企业数字化转型中发挥着重要作用。 近年来,我国区块链顶层设计加快完善。“十四五”规划明确提出,将区块链列为数字经济七大重点产业之一,发展区块链服务平台和金融科技、供应链管理、政府服务等领域的应用方案。同时,区块链产业加速发展,产业规模不断攀升。根据赛迪区块链研究院发布的《2021 年我国区块链年度发展白皮书》显示,我国区块链产业规模由 2016 年的 1 亿元增加至 2021 年的 65 亿元。在应用层面,区块链在政务、司法存证、供应链金融、
bengbengsu
2022/07/12
1.1K0
破解区块链应用开发难题,开发者该如何抓住区块链红利?
免费体验TBaaS长安链,公测报名中
即将上线的TBaaS“长安链体验网络”,具有零门槛免费体验、支持多语言合约开发、云API分钟级接入、合约可视化灵活调试、体验与商用无缝对接等特点,助力开发者零门槛、全方位试水长安链。
bengbengsu
2022/06/14
2.6K0
免费体验TBaaS长安链,公测报名中
除了游戏和医疗,腾讯区块链还准备做什么?
本文从技术的角度详细介绍了腾讯云区块链TBAAS系统上的最新应用场景。
腾讯技术工程官方号
2018/05/11
8.8K5
ABI Research:腾讯云TBaaS位居中国区块链服务市场第一
中新网11月22日电 近日,权威行业分析机构ABI Research公布了BaaS(BlockChain-as-a-Service,区块链即服务)领域的竞争力排名榜单。腾讯云TBaaS凭借在市场应用、产品落地、生态支持,以及安全、附加服务等方面的出色表现,在中国区块链市场上位居第一位。
Nancy WU
2018/12/26
2.9K0
腾讯云区块链TBaaS 3.1.3 版本发布
腾讯云区块链服务平台(TBaaS)V3.1.3 版本已于近日发布上线,新版本TBaaS服务平台基于Hyperledger Fabric 腾讯增强版引擎推出3种规格版本,分别为标准版、企业版、金融安全版,服务于不同场景需求的用户。同时,我们也为用户提供了体验版,用户可通过官网申请体验,快速上手,教您“5步玩转区块链”。
腾讯云区块链
2020/01/06
2.7K0
腾讯云区块链TBaaS 3.1.3 版本发布
区块链技术在行业应用中的挑战与困难
区块链技术最早出现于比特币之中,是支撑比特币作为应用系统运行的底层核心。随后,区块链生态系统不断进化,发展出以Hyperledger Fabric和以太坊为代表的智能合约与分布式应用宿主平台。但是,如何将区块链技术与具体的行业应用结合仍然面临很多的挑战与困难,这让许多机构望而却步。根据Gartner在2018年做的一项调查(Gartner's 2018 CIO Survey),77%的受访企业CIO表示他们对区块链技术没有兴趣。
Bing Shao
2018/09/05
6.6K1
区块链技术在行业应用中的挑战与困难
【云+社区年度征文】云链结合,区块链服务BaaS平台实践与应用
| 导语 区块链与云计算结合,应运而生的BaaS服务是目前非常重要的发展趋势,现在的BaaS服务就像十年前的云服务一样,处于初期发展阶段,随着区块链行业标准逐步形成,优势应用正在逐步浮出水面。对于大多数关注应用开发的企业来说,无需深入了解区块链底层技术、也无需在底层技术上投入太多资源去“重复造轮子”,采用BaaS服务,并在其之上搭建业务应用是企业的理想选择。腾讯云区块链服务平台TBaaS,于2017年正式推出并实现商业化,发展至今已落地众多应用案例,获得业界多项专业认证与奖项。
Nancy WU
2020/12/15
3.1K0
【云+社区年度征文】云链结合,区块链服务BaaS平台实践与应用
腾讯云助力水滴区块链 互助金均摊信息可在链上公示
近日消息,水滴公司区块链项目水滴区块链近日正式上线。当前主要应用于水滴互助的互助金均摊公示环节,为水滴公司打造透明、可信、安全的互助业务提供支撑。腾讯云区块链的TBaaS区块链服务平台为此次互助上链场景提供了技术支持。
bengbengsu
2022/04/26
5460
腾讯云助力水滴区块链 互助金均摊信息可在链上公示
腾讯云区块链TBaaS 3.0新版发布特性说明
腾讯云区块链服务平台(TBaaS)v3.0.1里程碑版本已于近日上线,新版本特性:支持Fabric v1.4腾讯增强版本(TPS 8500,智能合约支持国密与同态加密)、支持Java语言编写智能合约、支持隐私数据集、接入云监控、支持状态数据库CouchDB以及对联盟链/私有链支持扩容与配置变更等新特性。
腾讯云区块链
2019/06/24
2.1K1
2021可信区块链评测结果出炉:腾讯云区块链产品表现突出
7月21日消息,腾讯云区块链产品通过了中国信息通信研究院(以下简称“中国信通院”)第五批“可信区块链评测”,这意味着腾讯云区块链得到了国家级权威认可。
bengbengsu
2022/04/26
1.7K0
2021可信区块链评测结果出炉:腾讯云区块链产品表现突出
全真互联:可信协议与区块链技术是其关键支撑
| 导语 9月26日下午,腾讯联合埃森哲发布《全真互联白皮书》,首次解读并呈现“全真互联”的技术体系和应用场景。白皮书认为,可信协议是全真互联的关键支撑之一,而区块链是其中的关键技术。腾讯云区块链致力提供完整的区块链产品矩阵,支撑全真互联不断发展。 9月26日下午,腾讯联合埃森哲发布《全真互联白皮书》,首次解读并呈现“全真互联”的技术体系和应用场景。 全真互联的定义为:是通过多种终端和形式,实现对真实世界全面感知、连接、交互的一系列技术集合与数实融合创新模式。全真互联以“全真体验、无限连接、自由协同、数
bengbengsu
2022/09/28
9530
全真互联:可信协议与区块链技术是其关键支撑
官宣 | TBaaS长安链体验网络上线
新品重磅上线 近日,腾讯云区块链正式官宣,区块链服务平台TBaaS——长安链体验网络重磅上线。长安链体验网络是基于腾讯云TBaaS搭建的区块链开放测试环境,帮助开发者一键轻松体验长安链,省去测试环境搭建的成本投入。同时,TBaaS支持开发者从长安链体验网络快速迁移区块链应用到TBaaS生产网络,更简单、更快捷地构建长安链企业级应用。 TBaaS长安链体验网络是专门针对长安链技术体系搭建的区块链开放测试网络,包含了长安链可装配、高性能、强隐私等诸多特性及优势,具备测试搭建应用所需功能。TBaaS长安链体验
bengbengsu
2022/06/29
1.1K0
官宣 | TBaaS长安链体验网络上线
腾讯发布千帆区块链云市场,首批17家优质区块链企业入驻
近日,腾讯云区块链联合腾讯千帆云市场、腾讯区块链加速器正式发布腾讯千帆区块链云市场,将以链动产业、合作共赢为原则,汇聚生态优质区块链解决方案,促进区块链在产业数字化转型中加速落地。
腾讯云区块链
2021/05/14
3.4K0
腾讯发布千帆区块链云市场,首批17家优质区块链企业入驻
推荐阅读
相关推荐
腾讯云携手华筑通,打造首个建筑行业全周期区块链产融平台
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验