使用最新 Ti SDK 9.0.3 GA 的 Firebase 分析 screen_view 有问题

Firebase analytics with latest Ti SDK 9.0.3 GA having issue for screen_view

我尝试将 Firebase 与以前版本的 Ti SDK (7.5.2) 一起使用。 FIRAnalytics.setScreenName 和 FIRAnalytics.logEventWithName([=35= 的方法],其他模块中的相等方法)工作正常。

初步想到,可能是模块问题。但是读了几篇博文就知道 Firebase 会自动跟踪屏幕浏览量 https://firebase.google.com/docs/analytics/screenviews .

当然我们也可以手动调用

如果我的猜测是正确的,在应用程序启动时,firebase 开始跟踪屏幕时间,我们得到了以下错误。 (我尝试使用 ti.firebase、firebase.analytics 并为 ios 拥有示例原生移动设备)

objc[67740]: Cannot form weak reference to instance (0x7f9ab8e0aac0) of class UIViewController. It is possible that this object was over-released, or is in the process of deallocation.

我找到了关闭屏幕跟踪的替代方法。通过在 项目的 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"
    });

我们尝试使用最新的 titanium-firebase-analytics 模块。它工作正常。

https://github.com/hansemannn/titanium-firebase-analytics/releases/tag/ios-2.0.0

Firebase 本身发生了变化。现在通过传递常量发送 Screenview 也像日志事件一样。注意:如果您传递“screen_view”,它将不起作用。 你需要像下面这样使用 const,模块已经处理好了。

[FIRAnalytics logEventWithName:kFIREventScreenView parameters:]