为了从链接打开移动应用程序,您需要集成一个名为cordova-plugin-customurlscheme 的cordova 插件。使用此插件,您可以注册您的应用程序独有的自定义 URL“协议”(例如 myAwesomeApp://register?token=123)。使用您的自定义 url 安装插件后,单击任何以 myAwesomeApp:// 开头的链接将打开您的应用程序,并触发一个挂在名为 handleOpenUrl 的窗口对象上的函数,该函数接受 url 作为参数。在那里你可以根据 url 参数进行路由。
let self = this;
(<any>window).handleOpenURL = function handleOpenURL(url) {
setTimeout(() => {
if (url && url.indexOf('\register') !== -1) {
let token = URLHelper.getParameterByName(url, 'token');
self.setAsRoot(ConfirmEmailPage, { activationToken: token });
}
}, 0);
};
至于处理您的网络应用程序,您可以做的是以下(这是我目前正在做的):
在线托管一个页面(例如 www.myAwesomeWebsite.com/register?token=123),用于检查用户是否来自移动设备(更具体地说是 iOS 或 Android)。如果是这样,页面加载会将它们重定向到您的 myAwesomeApp://register?token=123 链接,并有一个按钮显示从应用商店安装应用,并带有指向您的移动应用的链接。如果用户有该应用程序,该应用程序将通过重定向打开,如果他们没有,他们将收到一条警告说找不到链接或某事,然后单击确定后,他们将看到从应用程序商店安装应用程序按钮。如果用户不是来自移动设备,只需将他们重定向到您的网络应用 myAwesomeWebApp.com/register?token=123。
另一种选择是使用第三方服务进行深度链接,例如branch
希望对您有所帮助。
编辑:自从我发布了这个答案后,Ionic 团队提供了他们自己的深度链接插件,这种插件可以简化应用程序内部的一些连接。他们的详细博客文章可以在here 找到。本质上你安装他们的插件:
cordova plugin add ionic-plugin-deeplinks --variable URL_SCHEME=ionichats --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=ionic-hats.com
然后像这样钩住它:
import {Component, ViewChild} from '@angular/core';
import {Platform, Nav, ionicBootstrap} from 'ionic-angular';
import {Deeplinks} from 'ionic-native';
import {AboutPage} from './pages/about/about';
import {HatDetailPage} from './pages/hat/hat';
@Component({
template: '<ion-nav [root]="rootPage"></ion-nav>',
})
class MyApp {
@ViewChild(Nav) nav:Nav;
constructor(private _platform: Platform) {}
ngAfterViewInit() {
this._platform.ready().then(() => {
Deeplinks.routeWithNavController(this.nav, {
'/about-us': AboutPage,
'/hats/:hatId': HatDetailPage
});
});
}
});
ionicBootstrap(MyApp);
请注意,虽然这会稍微改进插件接口,但它不会改变您必须使用其他机制来处理与您的网络应用程序一起处理深层链接的事实。