天天看點

Teams App 如何使用裝置的能力

我們以前講到過,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 App 如何使用裝置的能力

點選我們的應用,也可以針對每一個應用進行權限的調整。

Teams App 如何使用裝置的能力
注意:到目前為止,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以後會不會更改這個設計。

繼續閱讀