JavaScriptCore获取API console.log消息

时间:2016-10-05 16:02:48

标签: javascript jquery swift javascriptcore

我有一个简单的网络应用程序,可以将流数据打印到console.log。这在网页中运行得很好。

我希望在不使用网页视图的情况下将日志消息直接打印到Xcode控制台上。

如果可能的话,首选所有内容都在Swift中,但Objective-C解决方案还可以。

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <title>Barchart Market Data API Example</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

    <script src="../dist/barchart-marketdata-api-1.0.js"></script>

    <script type="text/javascript">

        $(function() {
            var onMarketUpdate = function(message) {
                if (message.type == "TRADE") {

                    var q = client.getMarketState().getQuote(message.symbol);
                    if (q)
                    console.log('Symbol: ' + q.symbol +
                            '\nLast:' + q.lastPrice +
                            '\nVolume:' + q.volume +
                            '\nTime:' + q.time);
                }
            };


            var client = new Barchart.RealtimeData.Connection();

            client.connect('qsws-us-e-01.aws.barchart.com', 'user', 'password');

            client.on('marketUpdate', onMarketUpdate, 'ESZ6');

        });
    </script>
    <body>
    </body>
    </html>

我已经能够将上面的脚本(脚本text / javascript标签中的所有内容加载到名为myLib.js的文件中)以及所需的库

    let fileLocation1 = NSBundle.mainBundle().pathForResource("jquery", ofType: "js")!

    let jsSource1 : String
    do {
        jsSource1 = try String(contentsOfFile: fileLocation1)
    } catch {
        jsSource1 = "Contents of JavaScript not loaded."
    }

    let fileLocation2 = NSBundle.mainBundle().pathForResource("barchart-marketdata-api", ofType: "js")!

    let jsSource2 : String
    do {
        jsSource2 = try String(contentsOfFile: fileLocation2)
    } catch {
        jsSource2 = "Contents of JavaScript not loaded."
    }

    let fileLocation3 = NSBundle.mainBundle().pathForResource("myLib", ofType: "js")!

    let jsSource3 : String
    do {
        jsSource3 = try String(contentsOfFile: fileLocation3)
    } catch {
        jsSource3 = "Contents of JavaScript not loaded."
    }

    let context = JSContext()
    context.evaluateScript(jsSource1)
    context.evaluateScript(jsSource2)
    context.evaluateScript(jsSource3)

我不确定如何将console.log的输出放入上下文中,因为它在Jquery匿名函数中。

它实际上不一定来自console.log,我可以将字符串返回到mac / iOS应用程序。

0 个答案:

没有答案