目前我正在使用VUE开发电容器4应用程序。要知道哪些部分使用最多,我想添加谷歌或Firebase分析。
在浏览器和安卓系统中,一切都很好,但在iOS上则不然。我尝试了6种不同的解决方案,但现在已经没有选择了。我的猜测是,它与电容器网络视图不被允许调用Google/Firebase分析或设置cookie有关。
另一个问题可能是Capacitor为localhost
的应用程序提供服务。当我补充道:时,这将澄清分析为什么有效
server: {
url: 'http://192.168.0.16:3333',
cleartext: true,
},
到CCD_ 2,因为它不是来自CCD_。
我想知道是否有人经历过同样的(可能知道解决方案(
在iOS上尝试的解决方案没有任何工作结果
1.添加了额外的同意标志以避免使用cookie
来自:禁用谷歌分析中的cookie-gtag.js
gtag("consent", "default", {
ad_storage: "denied",
analytics_storage: "denied",
})
2.添加了client_storage:";无">
gtag("config", "%VITE_APP_GOOGLE_TAG_MANAGER_TRACKING_ID%", {
send_page_view: false,
anonymize_ip: true,
client_storage: "none",
})
3.发件人https://github.com/ionic-team/capacitor/issues/1433#issuecomment-631404089
// allow capacitor:// as protocol
gtag('set', 'checkProtocolTask', function () { /* nothing */ });
4.回到analysis.js
ga("set", {
// don't abort if the protocol is not http(s)
checkProtocolTask: null,
// don't expect cookies to be enabled
checkStorageTask: null,
})
5.Firebase Analytics-电容器
https://github.com/capacitor-community/firebase-analytics自2011年1月25日以来不再维护
6.Firebase Analytics-Web
使用Firebase Analytics的web包https://firebase.google.com/docs/reference/js/analytics
这个问题(至少对我们来说(似乎源于这样一个事实,即GA脚本执行协议检查,并且拒绝执行任何操作,除非我们使用http
或https
协议。
让GA4在capacitor://
(或任何其他(协议下工作似乎确实需要一点破解——通过将整个GA脚本作为文本获取,并在执行之前执行战略性的查找+替换:
fetch("https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX")
.then(response => response.text())
.then(response => {
if (document.location.protocol.startsWith('http')) {
Function(response)()
} else {
Function(response.replaceAll('http:', 'capacitor:'))()
}
})
如果在电容器上运行,请不要忘记启用cookie:https://capacitorjs.com/docs/apis/cookies
当然,从长远来看,无法保证这种方法的可靠性。