如果我在浏览器中单击这样的链接:
<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>
我会推荐这样的东西
将您的网址设为:
<a href="myapp_url_scheme:///?restURL=rest_of_address">Url Scheme Test</a>
然后你可以从数据中获取密钥'restURL',它将开始工作。
请使用此代码获取网址:
Deeplinks.routeWithNavController(this.navChild, {
'/:urlAfterDomain': HomePage
}).subscribe((match) => {
console.log(match);
},(nomatch) => {
console.log(nomatch);
});
我相信这会对你有所帮助。