我正在使用Cordova诊断插件。我在插件github自述文件中提到了如下所示的代码 但是我在运行cordova应用程序时遇到终端错误,如下所示:未捕获TypeError:无法读取属性'诊断'未定义的。但它在网络上运行良好。
if (Meteor.isCordova) {
// check and request microphone access
cordova.plugins.diagnostic.getMicrophoneAuthorizationStatus(function(status) {
if (status !== "GRANTED") {
// if we don't have them request em.
cordova.plugins.diagnostic.requestMicrophoneAuthorization(function(status) {
//... do something
return;
});
}
}, function() {
throw new Meteor.error('failed to get permission for microphone');
});
}
答案 0 :(得分:1)
我不是在等待被触发的deviceready事件。
这就是为什么它不起作用的原因。插件的JS元素在运行时由Cordova动态加载,因此不能保证在deviceready
事件触发之前加载,这表示Cordova环境已完成设置。
在Meteor中,您可以使用Meteor.startup()
函数执行此操作:
if (Meteor.isCordova) {
// Wait for deviceready
Meteor.startup(function () {
// check and request microphone access
cordova.plugins.diagnostic.getMicrophoneAuthorizationStatus(function(status) {
if (status !== "GRANTED") {
// if we don't have them request em.
cordova.plugins.diagnostic.requestMicrophoneAuthorization(function(status) {
//... do something
return;
});
}
}, function() {
throw new Meteor.error('failed to get permission for microphone');
});
});
}