【发布时间】:2020-11-25 12:26:22
【问题描述】:
我尝试将 Firebase 与之前版本的 Ti SDK (7.5.2) 一起使用。 FIRAnalytics.setScreenName 和 FIRAnalytics.logEventWithName(ti.firebase 的方法,其他模块中的相等方法)工作正常。
最初的想法是,可能是模块问题。但是阅读几篇博文就知道 Firebase 会自动跟踪屏幕浏览量https://firebase.google.com/docs/analytics/screenviews。
当然我们也可以手动调用。
如果我的猜测是正确的,那么在应用启动时,firebase 会开始跟踪屏幕时间,并且我们会遇到错误。 (我尝试使用 ti.firebase、firebase.analytics 和自己的 ios 原生移动示例)
objc[67740]: 无法形成对实例的弱引用 (0x7f9ab8e0aac0) UIViewController 类。这个物体可能是 过度释放,或正在释放。
我找到了关闭屏幕跟踪的替代方法。通过在 Project 的 info.plist 中将 FirebaseScreenReportingEnabled 添加到 false。对于 Titanium 项目,我们需要添加 tiapp.xml 。这次我们没有看到任何问题,并且日志事件工作正常。但我没有看到任何屏幕视图,甚至是手动的。因为此选项将完全阻止屏幕跟踪。
:
<ios>
<enable-launch-screen-storyboard>true</enable-launch-screen-storyboard>
<use-app-thinning>true</use-app-thinning>
<plist>
<dict>
:
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDefault</string>
<key>FirebaseScreenReportingEnabled</key>
<false/>
</dict>
</plist>
</ios>
:
但这甚至不能手动跟踪屏幕浏览量。所以我们正在失去平均屏幕时间的轨迹。
这里是 ti.firebase 的例子(我尝试使用 firebase.analytics 很遗憾我可以参考这里的示例代码,但我们可以使用这个https://github.com/hansemannn/titanium-firebase-analytics/blob/master/example/app.js)
var _tFireb = require('ti.firebase');
_tFireb.configure();
function doClick(e) {
alert($.label.text);
var logParams = {
'name': "button_clicked",
'parameters': null
};
//Ti.API.info("Sending logEvtData", logParams);
_tFireb.FIRAnalytics.logEventWithName(logParams);
}
$.index.open();
_tFireb.FIRAnalytics.setScreenName({
'screenName' : "indexdefault",
'screenClass' : "indexdefault"
});
【问题讨论】:
-
您能否展示您如何实现 firebase 模块和 firebase-analytics 部分的代码。不应该是
setScreenNameAndScreenClass()吗? -
是的 miga 我同意,我只是复制 ti.firebase 的方法..
标签: ios firebase titanium appcelerator titanium-modules