我正在我的网络应用程序中实施 Firebase 分析。所以我用
export function LogAnalyticsEvent(
eventName: string,
eventParams?: {
page_title?: string;
page_location?: string;
page_path?: string;
[key: string]: any;
}
) {
const analytics = getFirebaseAnalytics();
logEvent(analytics, eventName, eventParams);
}
它非常适合页面浏览量等。但我正在实现一个重定向页面,例如“您正在离开此网站”,每当用户被重定向时,我想记录一个对重定向进行计数的事件:
const [redirecting, setRedirecting] = useState(false);
const handleRedirect = async () => {
setRedirecting(true);
if (url) {
try {
const targetUrl = new URL(url); // Revalidate URL before redirectx
// Log the redirect event
LogAnalyticsEvent("redirect_to_url", {
url: targetUrl.href,
domain: targetUrl.hostname,
});
window.location.assign(targetUrl.href);
setRedirecting(false);
} catch (e) {
console.error("Error:", e);
setRedirecting(false);
}
}
};
当用户重定向时,不会记录该事件,因为没有足够的时间来完成请求。我尝试使用
setTimeout
但在某些情况下不起作用,比如网速慢。有没有办法让我使用异步 logEvent?或者有什么办法可以解决这个问题?
我有办法使用异步日志事件吗?
不。 所有 Firebase API 在所有客户端平台上都是异步的。 任何其他行为都可能导致网站无限期地锁定浏览器,这是一种糟糕的用户体验。
如果您想在重定向的同时记录某些内容,那么唯一可行的选择是在重定向后在页面上执行日志,也许在本地存储或传递一些状态以便稍后处理。