2017-02-12 7 views
4

Если я нажимаю ссылку, как в браузере:Не удается получить URL с Deeplinks

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

Мое приложение открыто, но я не могу получить rest_of_address. Каждый раз это undefined. Что мне не хватает?

Я использую Ionic 2 с Ionic Deeplinks Plugin. Вот код, который я использую:

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> 

ответ

2

Я рекомендовал бы что-то вроде этого

Сделайте свой URL, как это:

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

Затем вы можете получить ключ «restURL» из данных, и она начнет работать.

+0

Я думаю, что это не решит мою проблему полностью, потому что я полагаю, что у меня будут проблемы с преобразованием https: /// rest_of_address в myapp_url_scheme: ///? RestURL = rest_of_address с помощью Ionic Deeplinks Plugin. Но я сделаю некоторые тесты. Благодаря! –

0

Пожалуйста, используйте этот код, чтобы получить URL:

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

Я уверен, что это поможет вам.