每当用户访问我的Angular/Ionic应用程序的屏幕时,我都会尝试记录事件。
这是我的配置信息:
Ionic:
ionic (Ionic CLI) : 4.1.2 (/Users/rguerin/.nvm/versions/node/v8.11.2/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.0
Cordova:
cordova (Cordova CLI) : 8.1.0
Cordova Platforms : ios 4.5.5
Cordova Plugins : no whitelisted plugins (16 plugins total)
System:
NodeJS : v8.11.2 (/Users/rguerin/.nvm/versions/node/v8.11.2/bin/node)
npm : 6.4.1
OS : macOS High Sierra
Xcode : Xcode 10.0 Build version 10A255
我也在使用以下插件:
<plugin name="cordova-plugin-firebase" spec="^2.0.0" />
我要查找的事件是"screen_view",但它是由Firebase自动记录的。问题是,这个事件只记录一次,因为当我使用Cordova时,插件可能会将我的应用程序视为一个页面。
当我尝试手动传递它时(请参阅下面的代码(,我在Firebase面板中看不到它。
export class CustomerPage {
ionViewDidEnter(): void {
(<any>window).FirebasePlugin.logEvent('screen_view', { page_id: 'customer_page' },
() => this.logger.trace('log event success'),
error => this.logger.error('Error login event: ', error));
}
}
我想避免使用自定义事件,正如我在这里和那里看到的,这是一个非免费和有限的解决方案。
有人有办法创建一个可靠且可利用的跟踪计划吗?
好的,所以作为一种变通方法,我使用setScreenName
方法。我在ngOnInit钩子中为每个组件设置了当前的屏幕名称,它似乎可以工作:
export class TestPage implements OnInit {
ngOnInit(): void {
(<any>window).FirebasePlugin.setScreenName('TestPage');
}
}
但我不认为它仍然是100%可靠的,而且测试起来有点苛刻,因为仪表板没有实时重新加载。
如果有人有更好的方法,欢迎您:(