Как условно установить корневую страницу в ionic 4? - PullRequest
2 голосов
/ 21 мая 2019

Я работаю над приложением ionic 4.когда пользователь входит в систему, я добавил флажок для запроса Запомнить меня , поэтому в следующий раз, когда пользователь откроет приложение, оно не отобразит страницу входа и сразу перенаправит пользователя на домашнюю страницу.Я гугл и нашел это .Однако при использовании принятого решения я столкнулся с проблемой, которая показывает страницу входа в течение 2 или 3 секунд, а затем открыть домашнюю страницу.Как я могу безопасно добиться этого без задержки?

app.component.ts

import { SmsVerificationService } from 'src/app/services/SMS/sms-verification.service';
    import { Component } from '@angular/core';
    import { Platform } from '@ionic/angular';
    import { SplashScreen } from '@ionic-native/splash-screen/ngx';
    import { StatusBar } from '@ionic-native/status-bar/ngx';
    import { FCM } from '@ionic-native/fcm/ngx';


    import { Plugins, Capacitor } from '@capacitor/core';
    import { Router } from '@angular/router';
    import { Storage } from '@ionic/storage';
    @Component({
      selector: 'app-root',
      templateUrl: 'app.component.html'
    })
    export class AppComponent {
      constructor(
        private platform: Platform,
        private splashScreen: SplashScreen,
        private statusBar: StatusBar,
        private fcm: FCM,
        private route: Router,
        private storage: Storage

      ) {



        this.initializeApp();
      }

      initializeApp() {

        this.platform.ready().then(() => {
          this.fcm.getToken().then(token => {
            console.log(' token is ', token);
          });
          this.fcm.onTokenRefresh().subscribe(token => {
            console.log('on token refresh ', token);
          });
          this.fcm.onNotification().subscribe(data => {
            console.log(data);
            if (data.wasTapped) {
              console.log('Received in background');
              // this.router.navigate([data.landing_page, data.price]);
            } else {
              console.log('Received in foreground');
              // this.router.navigate([data.landing_page, data.price]);
            }

          });
          this.storage.get('isLogined').then(data => {
                    if (data)
              this.route.navigateByUrl('/main-tab');
          })
          this.statusBar.styleDefault();
          this.splashScreen.hide();
          if (Capacitor.isPluginAvailable('SplashScreen')) {
            Plugins.SplashScreen.hide();
          }
        });
      }
    }

Коды, которые должны изменить страницу

this.storage.get('isLogined').then(data => {
                    if (data)
              this.route.navigateByUrl('/main-tab');
          })

1 Ответ

1 голос
/ 21 мая 2019

У вас есть отдельный компонент входа? Если это так, вы можете создать и добавить guard к своему компоненту входа в систему, чтобы перейти на главную страницу, когда отмечен Запомнить меня .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...