【问题标题】:Cordova InAppBrowser and FaceBook App Event LoggerCordova InAppBrowser 和 FaceBook 应用程序事件记录器
【发布时间】:2017-05-17 16:38:30
【问题描述】:

我正在尝试在 APP 中实现 FB 的 AppEventLogger 以跟踪用户行为和购买。 “APP”是混合的——它是基于科尔多瓦的。它是从 InAppBrowser 加载的,实际上是一个 javascript/PHP 网站。 我正在为 AppEventLogger 使用 Javascript API,如下所示:

var $fCity = $('#fromCity').val();
var $tCity = $('#toCity').val();
var params = { };
params[FB.AppEvents.ParameterNames.CONTENT_TYPE] = $fCity + ' - ' + $tCity;
FB.AppEvents.logEvent(
    FB.AppEvents.EventNames.SEARCHED,
    null, 
    params
);

向 facebook 发送以下请求:

当这个请求从应用程序发送到 facebook 时,没有任何反应。未记录该事件。 但是,当从常规浏览器打开/发出相同的链接/请求时,即使只是通过浏览器访问 InAppBrowser 源页面,也会记录该事件。 此外,我将 Facebook SDK 作为 Cordova 插件安装并通过插件发送事件(作为应用程序 - 当它开始和结束时) - 然后它也可以工作。但由于该应用程序位于 inappbrowser 内,因此我无法将该插件用于其他页面。

我已经检查了白名单插件,并且允许连接到 facebook.com。您甚至可以看到我们从 Facebook 的服务器获得了 200 响应和 gif 标头。

为什么 Facebook 的 AppEventBrowser 不记录从 InAppBrowser 插件发送的事件?

【问题讨论】:

  • 您是如何配置白名单插件并允许访问的?尝试允许测试<access origin="*" /> 的所有内容。可以将您的 inAppBrowser 窗口重定向到图形子域、不同的页面或您不允许的协议。
  • @XristoEftimov 我已经安装了 cordova-plugin-whitelist 并在 html 文件中配置了以下内容: connect.facebook.net"> 我也可以在 InAppBrowser 中打开任何外部网站,没有任何问题。
  • 您可以打开控制台并跟踪您发送的包裹吗?
  • @XristoEftimov 是的,我可以。屏幕截图来自控制台,请求 FB 的事件记录器。
  • 你有 JavaScript 错误吗?

标签: javascript android facebook cordova facebook-graph-api


【解决方案1】:

我找不到绕过限制的方法。最后我使用了 Facebook SDK 的 Cordova 插件来做我想做的事情。

【讨论】:

  • 插件的名称是什么?是ordova-plugin-facebook4 吗?
【解决方案2】:

需要检查的几件事

1.首先加载JS SDK的debug版本 (js.src = "//connect.facebook.net/en_US/sdk/debug.js";) 并查看日志。

2. inAppBrowser 无法访问 Cordova API,因此以防万一您的代码/库的任何部分尝试访问 Cordova API,从而可能产生问题,并且可能缺少请求参数,Facebook 事件默认需要记录(例如它记录android版本等)。您可以将参数与成功的请求进行比较。

对于混合应用程序,Facebook 推荐的方法是使用事件 API https://developers.facebook.com/docs/marketing-api/app-event-api/v2.8

对于在本机应用程序中使用网络视图的其他平台,一种选择是使用应用程序事件 API 将事件从您的服务器传递到 Facebook 服务器。

https://developers.facebook.com/docs/app-events/faq

【讨论】:

  • 我正在检查日志,当从 JavaScript API 发送时,我没有收到任何发布到 FB 的事件。我知道 InAppBrowser 无法访问 cordova API,这是 cmets 中讨论的问题。没有缺少参数,因为正如我所说,从浏览器打开同一页面时,而不是使用 InAppBrowser 可以正常工作。正如我所说,THE SAME REQUEST 可以在浏览器中使用——我已经比较了工作请求和非工作请求之间的参数和标头。我正在使用 App Event Api - 您可以从代码“FB.AppEvents.logEvent ..”中看到这一点
  • 我希望您在评论和否决之前检查链接。您使用的是 FB JS SDK,而不是事件 API。
  • 第二个想法是检查和比较,而不是解决方案,更多的是调试。
猜你喜欢
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 2017-06-07
相关资源
最近更新 更多