Can't get url with Deeplinks and Ionic 2


#1

Hi!

I posted this question on StackOverflow with no luck. I hope that anyone here can help me. Thanks a lot!

Here is the question:

If I click a link like this in the browser:

<a href="myapp_url_scheme://rest_of_address">Url Scheme Test</a>

My app is opened but I can’t get the rest_of_address

Everytime it is undefined.

What am I missing?

I’m using Ionic 2 with Ionic Deeplinks Plugin.

Thanks in advance!

Here the code that I’m using:

/************* app.component.ts ********************/
    import { Component, ViewChild } from '@angular/core';
    import { App, Platform, AlertController } from 'ionic-angular';
    import { StatusBar } from 'ionic-native';
    import { TabsPage } from '../pages/tabs/tabs';
    import { NavController, Nav } from 'ionic-angular';

    import { LoginPage } from '../pages/login/login';
    import { SignupPage } from '../pages/signup/signup';
    import { AuthService } from '../pages/login/authservice';
    import { HomePage } from '../pages/home/home';

    import {Network} from 'ionic-native';
    import {Deeplinks} from 'ionic-native';

    @Component({
      template: `<ion-nav [root]="rootPage"></ion-nav>`
    })
    export class MyApp {

      rootPage: any = HomePage;
      @ViewChild(Nav) navChild:Nav;

      constructor(private platform: Platform, private alert :AlertController) {
        platform.ready().then(() => {
          StatusBar.styleDefault();

        });

        document.addEventListener('deviceready', function () {
      var notificationOpenedCallback = function(jsonData) {
        console.log('notificationOpenedCallback: ' + JSON.stringify(jsonData));
      if (jsonData.additionalData) {
        if (jsonData.additionalData.myappurl)
          this.rootPage = jsonData.additionalData.myappurl;
      }

      };

    });
      }

      ngAfterViewInit() {
        this.platform.ready().then(() => { 
        if((window.localStorage.getItem('email') === "undefined" || window.localStorage.getItem('email') === null) || 
           (window.localStorage.getItem('password') === "undefined" || window.localStorage.getItem('password') === null)) {
          this.rootPage = LoginPage;
        } else {
          Deeplinks.routeWithNavController(this.navChild, {
            '/:urlAfterDomain': HomePage
          });
        }
        });
      }

    }

/************* home.ts ********************/
    import { Component } from '@angular/core';

    import { NavController, NavParams } from 'ionic-angular';
    import { AuthService } from '../login/authservice';
    import {Deeplinks} from 'ionic-native';

    @Component({
      selector: 'page-home',
      templateUrl: 'home.html'
    })

    export class HomePage {
      urlAfterDomain: string;
      constructor(public navCtrl: NavController, private _params: NavParams) {

          this.navCtrl = navCtrl;  
          this.urlAfterDomain = _params.get('urlAfterDomain');
          alert(this.urlAfterDomain);
          if (this.urlAfterDomain == null || this.urlAfterDomain === "undefined") {
            this.urlAfterDomain = "App";
          }
          else {
            this.urlAfterDomain.replace( "myapp_url_scheme://", "");
          }
          this.urlAfterDomain = "https://myapp.com/" + this.urlAfterDomain;
          alert(this.urlAfterDomain);
      }

    }


/************* home.html ********************/
    <ion-header>
    </ion-header>
    <ion-content  style="overflow: hidden;">
                    <iframe src={{urlAfterDomain}} height="100%" width="100%" frameborder="0"></iframe>
    </ion-content>