Как регистрировать события, используя Firebase с Ionic и Cordova - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь записать событие, когда пользователь заходит на экран моего приложения 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));
     }
}

Я бы не хотел использовать пользовательское событие, поскольку я видел здесь и там , это несвободное и ограниченное решение.

Кто-нибудь получил обходной путь для создания надежного и пригодного для использования плана отслеживания?

1 Ответ

0 голосов
/ 30 октября 2018

Хорошо, поэтому в качестве обходного пути я использую метод setScreenName. Я установил свое текущее имя экрана в хуке ngOnInit для каждого компонента, и это, кажется, работает:

export class TestPage implements OnInit {

    ngOnInit(): void {
        (<any>window).FirebasePlugin.setScreenName('TestPage');
    }
}

Но я не думаю, что он все еще надежен на 100%, и его довольно сложно протестировать, поскольку приборная панель не перезагружается в реальном времени.

Если у кого-то есть лучший способ сделать это, вы бы приветствовали:)

...