2017-07-05 19 views
1

私はCordova診断プラグインを使用しています。以下に示すように、コードバスアプリを実行しているときにターミナルでエラーが発生しています。Uncaught TypeError:未定義の 'diagnostic'プロパティを読み取ることができません。しかし、Web上で正常に動作します。それは働いていない理由になるだろうMeteor apk:Uncaught TypeError:未定義の '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私はアンドロイドデバイスを使用しており、デバイスイベントが発生するのを待っているわけではありません。 – dpatnaik

+0

@dpatnaikとても素敵な質問..とても面白い –

答えて

1

I am not waiting for deviceready event to get triggered.

。プラグインのJS要素は、実行時にCordovaによって動的にロードされるため、devicereadyイベントが発生するまでロードされる保証はなく、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'); 
     }); 
    }); 
} 
関連する問題