单击电子邮件中的链接时如何在应用程序中进行路由

时间:2018-12-12 15:43:21

标签: android angular typescript nativescript

我想通过电子邮件中的链接打开Application Android(本机语言)中的组件,即单击此处重置密码

我在电子邮件中有这样的链接:

http://secsystem.domain.tk/v1/resetPassword/11E8FC9

因此,当我从移动浏览器中单击链接时,我需要在组件resetPassword中启动应用。

我使用以下代码:

AndroidManifest.xml

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" android:host="secsystem.domain.tk" android:path="/v1/resetPassword"></data> 
        </intent-filter>

此代码仅在以下网址中有效:http://secsystem.domain.tk/v1/resetPassword

我想使用以下网址:http://secsystem.domain.tk/v1/resetPassword/11E8FC9

在routing.ts中,我编写了这段代码:

{ path: 'v1/resetPassword/:id', component: ResetPassIdComponent },

我想在单击链接时打开此组件。

对此有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

当路径具有动态参数时,应使用android:pathPattern

示例

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="http" android:host="secsystem.domain.tk" android:path="/v1/resetPassword/.*"></data> 
 </intent-filter>

到目前为止,所有有关使Android理解的是,当此特定URL模式匹配时,它必须打开此应用程序。 Angular在这里无关。如果要使用此URL模式打开应用程序时导航到特定组件,则必须手动处理它。

安装nativescript-urlhandler插件并查询用于在应用程序组件中打开应用程序并相应地在路由器中启动导航的URL。

import { Component, OnInit } from "@angular/core";
import { handleOpenURL, AppURL } from 'nativescript-urlhandler';

@Component({
  selector: "gr-main",
  template: "<page-router-outlet></page-router-outlet>"
})
export class AppComponent {
    constructor() {
    } 

    ngOnInit(){
        handleOpenURL((appURL: AppURL) => {
            console.log('Got the following appURL', appURL);
        });
     }
}