2017-02-12 5 views
4

bekommen Wenn ich einen Link wie diesen im Browser klicken:Kann nicht URL mit Deeplinks

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

Meine App geöffnet ist, aber ich kann nicht die rest_of_address bekommen. Jedes Mal ist es undefined. Was vermisse ich?

Ich benutze Ionic 2 mit Ionic Deeplinks Plugin. Hier ist der Code, den ich verwende:

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> 

Antwort

2

würde ich so etwas wie dieses

Machen Sie Ihre URL wie folgt empfehlen:

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

Dann können Sie die Taste ‚restURL‘ von Daten holen und es wird anfangen zu arbeiten.

+0

Ich denke, dass dies mein Problem nicht vollständig lösen wird, weil ich annehmen werde, dass ich Probleme haben werde, https: /// rest_of_address in myapp_url_scheme: ///? RestURL = rest_of_address mit dem Ionic Deeplinks Plugin umzuwandeln. Aber ich werde ein paar Tests machen. Vielen Dank! –

0

Bitte verwenden Sie diesen Code URL zu erhalten:

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

Ich bin sicher, das wird Ihnen helfen.

Verwandte Themen