

MonacaクラウドでiPhone向けのアプリを試作中です。  
以下のコードをiPhoneのmonacaデバッガで実行しても、success、errorいずれもApp
Logに表示されません。alertのコメントを外してalertを出すとApp Logも表示されます。

以前からApp
Logに出るべきものが出ておらずコードの追跡が困難なことがあり、不安定なのかと思っていましたが、今回はっきり再現するパターンが作れたと思います。

私の無知大ボケなのかもしれず戦々恐々なのですが、困っておりお叱りも覚悟の上質問いたします。  
何かおわかりになりましたら、宜しくお願いいたします。

iPhone5/iOS8.1.3、Monaca Debugger4.0.0、Cordova 4.1.0 Platform 3.7.0

[code]

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    <!DOCTYPE HTML>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <script src="components/loader.js"></script>
        <link rel="stylesheet" href="components/loader.css">
        <link rel="stylesheet" href="css/style.css">
    
        <!-- user -->
        <script>
            "use strict";
            document.addEventListener('DOMContentLoaded', function(){
                    document.addEventListener('deviceready', onDeviceReady);
                });
            
            function onDeviceReady(){
                console.log('start');
    
                navigator.device.capture.captureVideo(function(mediaFiles){
                    //alert('success');
                    console.log('success');
                }, function(){
                    //alert('error');
                    console.log('error');
                }, {limit: 1, duration: 120});
            }
        </script>
        <!-- user -->
    
    </head>
    <body>
    </body>
    </html>
[/code]

2015/05/01 9時追記  
試したところ以下のコードではsuccess、error共に2、3は実行され、1は出ませんでした。

[code]

    function onDeviceReady(){
      console.log('start');
    
      navigator.device.capture.captureVideo(function(mediaFiles){
        console.log('success');
        alert('success2');
        console.log('success3');
      }, function(){
        console.log('error');
        alert('error2');
        console.log('error3');
      }, {limit: 1, duration: 120});
    }
[/code]

2015/05/01 10時追記  
他のコールバックではどうかと思いsetTimeoutを試しましたが問題ありませんでした。

しかし、以下のコードのようにsetTimeoutとcaptureVideoを同時に実装した時、Timeoutが発生した時にVideoが終了していた場合はlogにtimeout1,3が出力されましたが、Video実行中の時は出力されませんでした。

このことからcaptureVideo実行中あるいはその直後はconsole.logが出力されないということかな、と想像します。  
仕様か不具合かミスか不明で、実際困るので何かおわかりになりましたら是非お教え下さい。

cameraでも同様でした。タグにcordovaを追記させて頂きます。

[code]

    function onDeviceReady(){
      console.log('start');
    
      setTimeout(function(){
        console.log('timeout1');
        alert('timeout2');
        console.log('timeout3');
      }, 1000);
    
      navigator.device.capture.captureVideo(function(mediaFiles){
        console.log('success1');
        alert('success2');
        console.log('success3');
      }, function(){
        console.log('error1');
        alert('error2');
        console.log('error3');
      }, {limit: 1, duration: 120});
    }
[/code]

2015/05/01 12時追記

cordova-plugin-consoleなるプラグインがあることを知りました。試してみたいのですが  
monacaをGOLDプランにしないとcordovaプラグインの追加ができないようで、現状試せません。


CC BY-SA 3.0
2015-04-30T07:33:38.303
9689
2023-10-11T12:07:15.910
2015-05-02T00:07:40.893
9031
9031
question
monaca cordova
console.logが出力されないことがある


console.logにはフィルター機能があるので、それで出力されていない、ということではないでしょうか?


CC BY-SA 3.0
2017-08-06T01:25:43.373
36971
2017-08-06T01:25:43.373
13432
9689
answer


`alert()` や `setTimeout()` で **実行タイミングを遅らせる事で成功している** ように読めます。  
Cordovaのドキュメントに準じて、`onload` まで待ってみたらどうなりますか。

  * [deviceready - Apache Cordova](https://cordova.apache.org/docs/ja/latest/cordova/events/events.deviceready.html)

Re: TRNK さん


CC BY-SA 4.0
2020-12-06T14:15:01.453
72458
2020-12-06T14:15:01.453
20262
9689
answer