2017-07-05 15 views
1

我正在使用Cordova診斷插件。我寫了如下所示的代碼,如插件github自述文件中提到的 但我在運行cordova應用時遇到錯誤,如下所示:Uncaught TypeError:無法讀取未定義的屬性'diagnostic'。但它在網上運行良好。Meteor apk:Uncaught TypeError:無法讀取undefined屬性'diagnostic'

 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'); 
}); 

}

+1

你測試什麼設備上 - Android或iOS?在運行此代碼之前,您是否在等待「deviceready」事件觸發? – DaveAlden

+0

@DaveAlden我正在使用一個Android設備,我不等待deviceready事件被觸發。 – dpatnaik

+0

@dpatnaik非常好的問題..太有意思了 –

回答

1

I am not waiting for deviceready event to get triggered.

那將是爲什麼它不工作。插件的JS元素在運行時由Cordova動態加載,因此不能保證在事件觸發前加載,這表示Cordova環境已完成設置。

流星,你這樣做使用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'); 
     }); 
    }); 
} 
相關問題