Javascript &引用;“拒绝许可”;Tizen web app访问三星Gear S3上的心率监视器时出错

Javascript &引用;“拒绝许可”;Tizen web app访问三星Gear S3上的心率监视器时出错,javascript,tizen,tizen-web-app,samsung-gear,Javascript,Tizen,Tizen Web App,Samsung Gear,我正在尝试为我的三星Gear S3 frontier在tizen中创建一个web应用程序。但是,我得到了一个“权限被拒绝”的安全错误 我有: <tizen:privilege name="http://developer.samsung.com/privilege/healthinfo"/> 我希望config.xml设置能够处理权限,但显然不行。手表运行的是Tizen 4.0.0.2,它带有一个“HRM_RAW”传感器,如果没有手动设置权限,我也无法访问该传感器 如何解决这个问题

我正在尝试为我的三星Gear S3 frontier在tizen中创建一个web应用程序。但是,我得到了一个“权限被拒绝”的安全错误

我有:

<tizen:privilege name="http://developer.samsung.com/privilege/healthinfo"/>
我希望
config.xml
设置能够处理权限,但显然不行。手表运行的是Tizen 4.0.0.2,它带有一个“HRM_RAW”传感器,如果没有手动设置权限,我也无法访问该传感器


如何解决这个问题?

我想我自己已经找到了答案,在一些更有创意的网络搜索之后。它是使用
tizen.ppm.requestPermission()
(如下所示)完成的

这将导致预期的行为。应用程序在安装时通过可穿戴用户界面询问是否应授予该权限,以及该决定是否应为默认值

然而,我做了一些重构,因为你的应用程序中经常需要几个权限,而回调地狱就在附近等待。因此我在tizen调用中编写了一个承诺包装:

function requestPermit(uri) {
  return new Promise(function(resolve, reject) {
    tizen.ppm.requestPermission(uri,
      function(success) => { resolve(success); },
      function(error) => { reject(error); });
  });
}
这让我可以

function main() {
  return permitRequester('http://tizen.org/privilege/healthinfo')
    .then(function() { return permitRequester('http://developer.samsung.com/privilege/healthinfo'); })
    .then(function() { return permitRequester('http://developer.samsung.com/privilege/medicalinfo'); })
    .then(function() { return displayHeartRate(); })
    .catch(function(err) { return console.log(err); });
}

window.onload = main();
希望这对任何人都有帮助。如果您需要更多信息,请访问

function requestPermit(uri) {
  return new Promise(function(resolve, reject) {
    tizen.ppm.requestPermission(uri,
      function(success) => { resolve(success); },
      function(error) => { reject(error); });
  });
}
function main() {
  return permitRequester('http://tizen.org/privilege/healthinfo')
    .then(function() { return permitRequester('http://developer.samsung.com/privilege/healthinfo'); })
    .then(function() { return permitRequester('http://developer.samsung.com/privilege/medicalinfo'); })
    .then(function() { return displayHeartRate(); })
    .catch(function(err) { return console.log(err); });
}

window.onload = main();