Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ibm mobilefirst 如何让Worklight 6.1 Analytics自定义事件在iOS/Android/mobileWeb上运行?_Ibm Mobilefirst_Worklight Analytics - Fatal编程技术网

Ibm mobilefirst 如何让Worklight 6.1 Analytics自定义事件在iOS/Android/mobileWeb上运行?

Ibm mobilefirst 如何让Worklight 6.1 Analytics自定义事件在iOS/Android/mobileWeb上运行?,ibm-mobilefirst,worklight-analytics,Ibm Mobilefirst,Worklight Analytics,让Worklight Analytics自定义事件在WL v6.1中运行时遇到了重大问题 对于我的环境,我使用最新的6.1.0.1 0718。我们已经在AWS实例上安装了用于开发的分析,我通过worklight.properties指向它。操作分析仪表板可访问,并显示正确的基本分析数据 我在整个mobileWeb中都遇到了问题,仅在开发人员、iPhone和Android环境中使用此功能 mobileWeb:analytics队列大小将永远增加,并且不会触发发送。我在firebug中运行了代码,它

让Worklight Analytics自定义事件在WL v6.1中运行时遇到了重大问题

对于我的环境,我使用最新的6.1.0.1 0718。我们已经在AWS实例上安装了用于开发的分析,我通过worklight.properties指向它。操作分析仪表板可访问,并显示正确的基本分析数据

我在整个mobileWeb中都遇到了问题,仅在开发人员、iPhone和Android环境中使用此功能

mobileWeb:analytics队列大小将永远增加,并且不会触发发送。我在firebug中运行了代码,它似乎使用了不推荐使用的WL.Client.isConnected方法,该方法对于mobileWeb总是返回false。所以我通过黑客攻击使其返回true并使mobileWeb正常工作:队列在10条消息后刷新,结果可以在Analytics console服务器日志中查看。这确认分析服务器至少已正确配置

iPhone模拟器:尝试在10条消息排队后发送。但是我从IHS的分析服务器上得到了400分。我已尝试增加日志级别,但无法生成更多内容:

<wl_server_ip> - - [11/Aug/2014:13:12:42 -0400] "POST /iwap/v1/events/_bulk HTTP/1.1" 400 335
为了触发分析发送,我在for循环中对此进行了10次迭代。顺便说一句,我从未收到队列被刷新的消息,但它似乎至少尝试在iPhone/Android上发送

任何帮助都将不胜感激。我可以根据需要提供更多信息。

编辑:

再看一眼,我看到了另一个问题:

TL库错误:url:http://:80/iwap/v1/events/\u bulk 流错误java.util.zip.DataFormatException:流错误

-[11/Aug/2014:13:12:42-0400]POST/iwap/v1/events/_bulkhttp/1.1400 335

您的客户端是否直接将数据发送到/iwap/v1/events/\u bulk?客户端数据不应直接进入分析服务器。它必须通过worklight服务器,然后worklight服务器将其转发到分析服务器。您是否已将客户端代码配置为指向/iwap/v1/events/\u bulk?如果删除此配置,它应默认为指向worklight服务器的正确位置

原件:

在Worklight 6.1中,Worklight在封面下使用Tealeaf来收集和发送分析数据。当分析数据以循环的形式发送到Tealeaf时,由于某种原因它会失败。不要在循环中进行调用,尝试使用按钮手动调用WL.Analytics.log。

mobileWeb:我将跟进避免使用WL.Client.isConnected的必要性

iOS:jnortey是正确的;客户端不应该知道分析服务器的URL。如果在某个时候,您在TLFConfigurableItems.plist文件中有地址,运行应用程序,然后将TLFConfigurableItems.plist中的值替换为@USE_WORKLIGHT_DEFAULT@,则旧的硬编码值可能已保留,您应该卸载/重新安装应用程序或清除所有数据,然后重试

安卓:和iOS的故事一样。如果TLFConfigurableItems.properties文件与硬编码的值一起使用,则该值已保留,您需要卸载/重新安装应用程序,或者清除所有数据,然后重试


还有,你在测试什么版本的Android。您拥有的Tealeaf库版本可能正是这样,因此您需要Android上更新的固定版本的Tealeaf库,以适应Android的DeflaterOutputStream行为的变化。

感谢@jnortey的响应。我以5秒为增量尝试了单独的WL.analysis.log调用,在10次单独调用后发现了相同的问题。根据您的编辑:是的,这些就是我上面提到的问题。回答您的问题:我们已经在AWS实例上安装了用于开发的分析,我通过worklight.properties指向它。我没有在WL init选项中设置url属性。我理解,我只是想重申它们是详细的。客户端永远不应该知道iwap/v1/events url。即使数据正确转发到Worklight server,分析端点也会对客户端完全隐藏。这是否可能是在本机代码中而不是在init options属性中更改的?对于iOS,有一个名为TLFResources.bundle的文件,其中有tlfconfigurationitems.plist。在plist中有一个名为PostMessageUrl的键。您可以发布此键的值吗?从我的iphone/native/Tealeaf/TLFResources.bundle/tlfconfigurationitems.plist:PostMessageUrl@USE_WORKLIGHT_DEFAULT@从android/native/assets/tlfconfigurationitems.properties:Worklight将以编程方式设置PostMessageUrl:PostMessageUrl=@USE\u Worklight\u DEFAULT@是否正常?很抱歉格式化idk这个小降价的东西。这一切看起来都很好。完全不明白为什么你会在回复中看到大量数据。有没有办法让我多看看你的照片
项目信息?你们的PMR开着吗?好的,这帮了大忙。iOS在调试过程中,我曾将分析url直接添加到worklight.properties中。尽管我已经删除了它,但删除应用程序并重新安装后,iOS仍能正常工作。Android我在4.4.2上。当我在另一个4.3虚拟机上运行该应用程序时,分析调用起了作用。我在WL 6.1.0.1 0718上运行-我在哪里可以获得有关升级我的Tealeaf库的信息?您必须与IBM的Tealeaf专业服务联系。如果我的回答有助于解决原始问题,请将其标记为已回答。
08-11 13:32:16.970: E/UICAndroid(1748): TL Library Error: url:http://<analytics_ip>:80/iwap/v1/events/_bulk stream errorjava.util.zip.DataFormatException: stream error
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.zip.Deflater.deflateImpl(Native Method)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.zip.Deflater.deflateImpl(Deflater.java:241)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.zip.Deflater.deflate(Deflater.java:232)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.zip.DeflaterOutputStream.flush(DeflaterOutputStream.java:193)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.HTTPUtil.createEntity(HTTPUtil.java:93)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.HTTPUtil.sendPost(HTTPUtil.java:181)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.HTTPUtil.sendHttpPost(HTTPUtil.java:115)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.PostTask.sendMessageFormat(PostTask.java:72)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.PostTask.doInBackground(PostTask.java:28)
08-11 13:32:16.970: E/UICAndroid(1748):     at com.tl.uic.util.PostTask.doInBackground(PostTask.java:1)
08-11 13:32:16.970: E/UICAndroid(1748):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-11 13:32:16.970: E/UICAndroid(1748):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
08-11 13:32:16.970: E/UICAndroid(1748):     at java.lang.Thread.run(Thread.java:841)
function doBetterAnalyticsWork(i) {
        WL.Analytics.log({hello: 'world ' + i}, 'test-analytics')
        .always(function(wasQueueFlushed, errObj){
            if (wasQueueFlushed) {
                WL.Logger.debug('The queue was flushed');
            } else {
                WL.Logger.debug('The queue was NOT flushed');
            }
            if (typeof errObj === 'object') {
                WL.Logger.error('Error trying to flush the queue', errObj);
            }
        });
        WL.Logger.debug('WL.Analytics.state(): ' + JSON.stringify(WL.Analytics.state()));
    }