0

我正在尝试找到一种解决方案来从iPhone上的 Safari 浏览器中触发像素

这是我的场景:

我有一个网站(不是本机应用程序),需要在单击提交按钮 10 秒后向第三方触发像素(目前我正在使用 JavaScript)。

问题是当离开另一个应用程序时,JavaScript 停止运行,因此像素不会被触发。

还有其他方法可以触发像素吗?

4

3 回答 3

1

在移动浏览器中没有办法做到这一点。我唯一能想到的就是检测到您在移动设备上,然后才在提交时触发 gif。如果它必须在 10 秒之后,那么可能会从服务器触发它,伪造在 gif 的请求中发送的数据。

于 2013-04-09T07:03:46.110 回答
0

如果我了解您的问题,我认为您只有两个选择:

  1. 从表单页面发送您的跟踪像素(假设您控制它);或者
  2. 仅在发出跟踪像素请求后提交表单(或者更安全,在获得非错误响应后)。

问题是 Mobile Safari 在标签页处于非活动状态时会完全进入休眠状态。我相信他们会立即进入睡眠状态(与原生 web 视图不同,您有两秒钟的时间来关闭您的应用程序并在应用程序“退出”之前执行您需要做的任何内务处理。)

于 2013-04-08T11:57:11.673 回答
0

您的问题没有可以在浏览器上实现的合理解决方案。这是由于(并且您已经介绍过)移动 safari 在后台运行后根本不会执行任何操作的事实。因此,您要么需要一个 10 秒的加载屏幕,这可能会导致转换,要么需要类似以下 hack/last-resort 的东西:

1)检测您是否在移动设备上

2)向您的服务器发出像素请求,以及初始提交(甚至从提交中捎带它)

3)在您的服务器端代码上创建一个回调,延迟 10 秒,然后将请求(标头和所有)转发给第三方。这至少必须包括用户代理和 IP。根据您的服务器端语言,欺骗 IP 可能很困难。

缺点:

更多的代码,这非常脆弱。我并不是说无论如何这是一个很好的解决方案。此外,您将丢失该像素发送给第三方的任何 cookie 信息,因为该像素可能托管在您无法控制的域上。如果第三方的实现在请求中需要 cookie 信息,则此解决方法将不起作用。此外,不会传递任何第三方像素特定数据,例如像素上的 ETag。

鉴于您正试图规避移动 safari 的基本行为(也就是在后台不执行 javascript),但是,我看不到任何可靠的客户端上执行此操作的选项。您的另一个选择是在您的域上设置一个 cookie,然后在他们下次加载您的一个页面时,触发像素。这假设用户将重新访问您的页面,这取决于您的用户可能会或可能不会以任何频率发生。

于 2013-06-07T15:28:28.503 回答