我们以前讲到过,Teams有很多中可以扩展的方面,其中有一种是Tab,开发者可以开发一个web page/app,然后以tab的方式嵌入到teams里面。

除了基本的功能,这种tab也可以使用teams客户端设备所带的一些能力,比如:

  • 摄像头
  • 麦克风
  • 相册
  • 扫二维码
  • 地理位置

有些这些能力,我们开发的tab就能完成更多更有趣的功能。这篇文章我们就来看看如何获取这些能力。

首先,每个teams app有一个manifest.json来描述app的一些基本信息,同样,我们需要在manifest里声明我们app所需要的设备能力。

"devicePermissions": ["media","geolocation"
],
  • media 是指 “摄像头”, “麦克风”, “话筒” 和 “相册”
  • geolocation 是指 “获取地理位置” 能力

目前Teams自带的 app studio 界面里不支持这个功能,所以我们必须手动的编辑 manifest.json 文件,然后在管理team的界面里 “upload a custom app”。

上传后,我们在设置里就可以看到 Teams 客户端已经允许了这两个设备能力

点击我们的应用,也可以针对每一个应用进行权限的调整。

注意:到目前为止,Teams的网页版本里还不支持,必须使用 Teams 客户端

有了权限的声明,我们接下来就可以在我们的web页面里使用标准的HTML5 api检查权限是否可用了

navigator.permissions.query({ name: 'camera' });
navigator.permissions.query({ name: 'microphone' });
navigator.permissions.query({ name: 'geolocation' });navigator.permissions.query({name:'geolocation'}).then(function(result) {if (result.state == 'granted') {// 可用} else if (result.state == 'prompt') {// 不可用}
});

然后我们就能使用如下的js来获取当前用户的地理位置信息:

navigator.geolocation.getCurrentPosition(function (position) {position.coords.latitude;position.coords.longitude;...
});

或者拍照:

microsoftTeams.media.captureImage((error: microsoftTeams.SdkError, files: microsoftTeams.media.File[]) => {...
});

设备能力权限的有效范围

Teams目前的把设备能力权限的有效范围控制在”登入会话”级别,什么意思呢?就是我在当前这个设备登入后,允许权限的设置只针对这个设备的这个登入会话,如果换一个设备,那这些权限还是需要用户再次同意确认的。或者,如果你登出再登入,或者你切换租户,这些权限也需要用户再次同意确认。我个人觉得不同设备需要再次确认比较合理,但同一个设备登出登入或者切换租户也需要再次确认,这个有点过于麻烦了。不知道Teams以后会不会更改这个设计。

Teams App 如何使用设备的能力相关推荐

  1. Teams App设备的地理位置能力

    我们上一篇文章讲了如何在Teams app里扫描二维码,这篇文章我们来看一下如何获取当前设备的地理位置,并且在地图上显示地理位置. 首先,我们先到app studio里,创建一个teams app,然 ...

  2. Teams App 扫描二维码

    上篇文章我们讲了如何在app的manifest里设置设备的权限,这篇文章我们来实际操作开发一个可以扫描二维码的teams app. 首先,我们先到app studio里,创建一个teams app,然 ...

  3. 面向全球用户的Teams app之时区篇

    我在前两篇文章里分享了Global Ready的app时会遇到的不同文化的挑战.这篇我继续分享在时区方面的挑战. 时间是最复杂的,最容易出错的部分.时间复杂的最根本原因是时区问题. 首先,大家都知道, ...

  4. 一站式赋能智能厨电厨电场景App+云菜谱+多种通讯能力支持

    Part1-厨电产品品类介绍 厨电产品品类介绍 按用途分为:食物准备.制备.烹饪.储藏. 厨房卫生五类食物准备:洗菜机.和面机.切片机.食 物处理机.打蛋器.搅拌器等:食物制备:挤汁器.酸奶机.爆米花 ...

  5. 使用环境变量来配置 Teams App 的 manifest

    上篇文章我们介绍了 Teams 的 Developer Portal,今天我想分享一个dev portal里一个比较实用的功能.这个功能在之前的 App Studio 里没有.这个功能叫 Enviro ...

  6. 在Teams app代码中enable nullable

    昨天讲了一下如何把代码升级到 net6,今天我优化了好几个小时更新代码,enable了nullable. c#的nullable我一直非常喜欢,它可以帮助开发人员,让开发人员去思考,哪些地方需要可以为 ...

  7. 将Teams app升级到net6

    net6 发布已经有一个多月了,因为我的LuckyDraw app是使用Azure app service,当时我查了一下app service还没有ready,昨天我又查看了一下,发现app ser ...

  8. 主动给团队或用户安装Teams App

    在写这篇文章的时候,这个新功能还处在 Public Review,这意味着可能(很小的可能性)这里写的方法在正式发布前还会有一些改动. 之前有一些做teams app开发的朋友问过我,能不能主动给一个 ...

  9. 使用Azure轻松实现Teams App的全球合规性

    我在之前的一篇博客里面讲了合规性对于我们Teams app是非常重要的,因为office365平台就是面向全世界用户的,我们开发的teams app一旦发布后,立刻就会有各国各地区的用户来进行安装使用 ...

最新文章

  1. 【记录】解决uni-app 用nginx反向代理出现Invalid Host header问题
  2. idea ctrl+alt+t快捷键
  3. PLSQL_基础系列11_递归和层次查询CONNECT BY(案例)
  4. 不止代码:生日欢唱(ybtoj-区间dp)
  5. java自动依照日期建表,脚本根据一个表中的日期字段填充每月汇总表
  6. Composer fails to download http json files on update, not a network issue, https fine
  7. 三元表达式、列表推导式、生成器表达式、递归、内置函数、匿名函数
  8. android 通过图片url获取宽高_通过 URL 获取图片宽高优化
  9. Android Screen
  10. Windows系统错误代码大全
  11. 开源改变了小米什么?
  12. LAMP+LNMP(二) MySQL/Mariadb概述与安装实践
  13. 漏洞库:爬取CNNVD-国家信息安全漏洞库
  14. 我们学校有一个计算机室英文,深圳朗文版小学二年级下册Unit 2 At school练习题...
  15. Ubuntu系统上的ImageJ安装和卸载方法
  16. python sl4a_SL4A - 随风飘落的雨滴 - 博客园
  17. free-mybatis-plugin插件下载
  18. 信息技术领域会议(技术领域和非技术领域)
  19. intellij IDEA 中,.properties文件unicode转中文
  20. CNN网络结构发展演变:从LeNet到HRNet(一)

热门文章

  1. 华为鸿蒙系统技术细节盘点
  2. java GUI怎么输入_在Swing中创建Java GUI以进行表单输入
  3. 工业仪器仪表 界面设计_如何设计时尚的仪表板界面
  4. 面试官问 async、await 函数原理是在问什么?
  5. BMP位图之8位位图(三)
  6. Mac 的mysql5.7没有配置文件,如何解决only_full_group_by 问题
  7. 基于LAMP实现web日志管理查看
  8. HDU5248:序列变换(二分)
  9. 教你从零开始搭建一款前端脚手架工具
  10. 疯狂ios讲义疯狂连载之实现游戏逻辑(2)