当浏览器处于后台时,使用javascript触发的像素跟踪不会在移动设备上触发

Pixel tracking fired with javascript is not fired on mobile when browser is in background

本文关键字:跟踪 像素 移动 javascript 于后台 浏览器 后台 使用      更新时间:2023-09-26

我正试图找到一个解决方案,从Safari浏览器发射像素iPhone

下面是我的场景:

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

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

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

在移动浏览器中无法做到这一点。我唯一能想到的是检测到你是在手机上,然后才触发gif提交。如果必须在10秒之后,那么可以从服务器上触发它,假装在gif .

请求中发送的数据。

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

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

问题是Mobile Safari在标签页不活动时将其完全置于睡眠状态。我相信他们会立即进入睡眠状态(不像原生的webview,你有两秒钟的时间关闭应用程序,在应用程序"辞职"之前做任何你需要做的家务)

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

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

2)向服务器发出像素请求,并连同初始提交(甚至从提交中附加)

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

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

考虑到您试图规避移动safari的基本行为(即在后台不执行javascript),然而,我没有看到任何可靠的客户端上这样做的选项。你的另一个选择是在你的域名上设置一个cookie,下次他们加载你的网页时,触发像素。这假定用户会重新访问您的页面,这取决于您的用户可能会或可能不会以任何频率发生。