Javascript &引用;“拒绝许可”;Tizen web app访问三星Gear S3上的心率监视器时出错
我正在尝试为我的三星Gear S3 frontier在tizen中创建一个web应用程序。但是,我得到了一个“权限被拒绝”的安全错误 我有: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”传感器,如果没有手动设置权限,我也无法访问该传感器 如何解决这个问题
<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();