Использование Ionic Native Deeplinks для загрузки угловых компонентов - PullRequest
0 голосов
/ 21 октября 2019

Я искал в интернете и нашел отличный учебник для YouTube , который приближает меня к работе с ионными глубокими ссылками.

Используя симулятор андроида, я вижу, что мойтекущая настройка совпадает с маршрутом, который я пытаюсь использовать при доступе к пути / match внутри приложения.

Я буду в конечном итоге запускать этот код в функции обратного вызова push-уведомлений, нодля тестирования я вызываю глубокие ссылки на initializeApp ().

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

пример codepen:

<h1><a href="sideline://sidelineapp.io/match">Alert</a></h1>

Iмой app.component.ts настроен так:

initializeApp() {
    this.platform.ready().then(() => {

      if(localStorage.getItem('config') !== null){
        localStorage.removeItem('config');
      }

      this.splashScreen.hide();

      timer(3000).subscribe(() => {
        this.showSplash = false;
      });

      if (this.platform.is('cordova')) {
        this.oneSignalPush();
        console.log('onesignal');
      }

      this.deeplinks.route({
        '/match': StatsComponent,
      }).subscribe((match) => {
        alert(JSON.stringify(match.$link.path));<-- this alerts the correct path
        this.router.navigate([match.$link.path]);<-- this routes to /match
        console.log('match', match)
      }, (nomatch) => {
        nomatch.$link
        alert(JSON.stringify(nomatch));
        console.log('no match', nomatch)
      })

    });
  }

объект, который регистрируется в консоли, выглядит так (извините, просто картинка):

enter image description here

Я вижу, что $ route найден, но, поскольку путь требует, чтобы компонент для представления отображался, как мой app-routing.module.ts, а не Ionic Page, представление не 'т рендер. Графика загрузки просто зависает, и компонент не инициализируется после того, как маршрут найден.

Кто-нибудь может предложить решение этой проблемы? Я видел примеры разработчиков, использующих для этого угловые модули, но не компоненты. Есть ли что-то еще, что я должен делать?

1 Ответ

0 голосов
/ 24 октября 2019
  • В качестве альтернативы, если вы используете Ionic, есть удобный метод, который берет ссылку на NavController и обрабатывает фактическую навигацию для вас:
  • this.deeplinks.routeWithNavController(this.navController, { '/about-us': AboutPage, '/products/:productId': ProductPage }).subscribe(match => { // match.$route - the route we matched, which is the matched entry from the arguments to route() // match.$args - the args passed in the link // match.$link - the full link data console.log('Successfully matched route', match); }, nomatch => { // nomatch.$link - the full link data console.error('Got a deeplink that didn\'t match', nomatch); });
  • вытакже можно получить ссылку по этой ссылке git repo https://github.com/ionic-team/ionic2-deeplinks-demo/blob/master/app/app.ts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...