我正在尝试使用Application Insight for Cordova(离子)应用程序并面临以下问题。
App insight JS请求 file:// dc.services.visualstudio.com/v2/track而不是 https://
我理解这是因为app使用 file://
托管在Android设备中我也尝试过使用MS提供的cordova插件,appInsight对象变为空。
下面是我正在使用的代码
var appInsights=window.appInsights||function(config){
function r(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s=u.createElement(o),i,f;for(s.src=config.url||"http://az416426.vo.msecnd.net/scripts/a/ai.0.js",u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=["Event","Exception","Metric","PageView","Trace"];i.length;)r("track"+i.pop());return r("setAuthenticatedUserContext"),r("clearAuthenticatedUserContext"),config.disableExceptionTracking||(i="onerror",r("_"+i),f=e[i],e[i]=function(config,r,u,e,o){var s=f&&f(config,r,u,e,o);return s!==!0&&t["_"+i](config,r,u,e,o),s}),t
}({
instrumentationKey: "--key--"
});
window.appInsights=appInsights;

请注意,在上面的代码中我添加了 http:// 来下载ai.0.js文件。否则该请求也会转到 file://
答案 0 :(得分:1)
感谢@John在git上创建问题。我发现了一种将它用于cordova应用程序的方法,如下所示
我添加了以下选项以及instrumentationKey
endpointUrl: "https://dc.services.visualstudio.com/v2/track"
有效。我不确定这是否正确,但它确实有效。实际上我不想将ai.0.js复制到我的项目中,因为如果Microsoft更改ai.0.js我不知道该怎么办,那么很难将更改推送到所有已安装的设备。
答案 1 :(得分:0)
这可能只是设置端点的问题:在检测密钥之后。但我不确定在Cordova上使用App Insights是否有很多经验。
答案 2 :(得分:0)
您正在使用的示例代码段,以便在您的网站为https
时,也会通过https
检索ai脚本,因此您不会收到有关的失败和错误不安全的内容。它使用与站点其余部分一致的协议。
如果您在cordova中本地执行此操作,则必须像您一样自定义注入代码,因为该代码段旨在用于浏览器,而不是基于文件的应用程序。您可能还想将ai.0.js文件本地复制到项目中,并修改脚本以使用该文件的本地副本,以便您的应用程序不必每次都下载它?
修改:我还在App Insights JS github项目中打开了issue #93来跟踪此内容