Microsoft Application Insights on Cordova 请求转到 file://

Microsoft Application Insights on Cordova requests goes to file://

我正在尝试为基于 Cordova(离子)的应用程序使用 Application Insight,但遇到了以下问题。

App Insight JS 请求 file:// dc.services.visualstudio.com/v2/track 而不是 https://

我明白这是因为应用程序使用 file://

在 android 设备中托管

我也试过使用MS提供的cordova插件,appInsight对象变为null。

下面是我使用的代码

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://

这可能只是设置端点的问题:在检测密钥之后。但是我不确定是否有很多使用 Cordova 的 App Insights 的经验。

您使用的示例代码段是这样写的,这样如果您的网站是 https,ai 脚本也会通过 https 检索,因此您不会遇到有关的失败和错误不安全的内容。它使用与网站其余部分相同的协议以保持一致性。

如果您在 cordova 中本地执行此操作,则必须像您一样自定义注入代码,因为该代码段旨在用于浏览器,而不是基于文件的应用程序。您可能还想将 ai.0.js 文件本地复制到您的项目中,并修改脚本以使用该文件的本地副本,以便您的应用程序不必每次都下载它?

编辑: 我还在 App Insights JS github 项目中打开了 issue #93 来跟踪这个

感谢@John 在 git 上创建问题。我找到了一种将它用于 cordova 应用程序的方法,如下所示

我添加了以下选项以及 instrumentationKey

endpointUrl: "https://dc.services.visualstudio.com/v2/track"

成功了。我不确定这是否正确,但它确实有效。实际上我不想将 ai.0.js 复制到我的项目中,因为我不确定如果 Microsoft 更改了 ai.0.js 该怎么办,那么很难将更改推送到所有已安装的设备。