使用Deeplinks无法获取网址

问题描述 投票:4回答:2

如果我在浏览器中单击这样的链接:

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

我的应用程序已打开,但我无法获得rest_of_address。每次都是undefined。我错过了什么?

我正在使用Ionic 2和Ionic Deeplinks插件。这里是我正在使用的代码:

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>
javascript ionic2 deep-linking
2个回答
2
投票

我会推荐这样的东西

将您的网址设为:

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

然后你可以从数据中获取密钥'restURL',它将开始工作。


0
投票

请使用此代码获取网址:

 Deeplinks.routeWithNavController(this.navChild, {
         '/:urlAfterDomain': HomePage
       }).subscribe((match) => {
         console.log(match);
       },(nomatch) => {
         console.log(nomatch);
  });

我相信这会对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.