如何在ionic中处理url schema 和 如果在ionic app中打开其他app并传递参数
Contents
在ionic app中处理URL SCHEMA(ANDROID)
- 安装插件
ionic cordova plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/
npm install --save @ionic-native/deeplinks
将myapp换成当前app的名称, 将example 换成需要跳转app 的域名
- 修改app.module.ts,将插件引入ionic工程
import { Deeplinks } from '@ionic-native/deeplinks';
...
@NgModule({
...
providers: [
...
Deeplinks
...
]
...
})
- 修改app.component.ts
在app.component.ts 中写入如下代码,注意须在platform.ready中
其他app调用当前app的链接示例 myapp://app/account myapp 是前面定义的 URL_SCHEME app不可修改 accont换成实际的账号
注意三个地方:
- ‘
/:account': 'LoginPage'
:定义能够触发match代码的url链接,这里只会响应myapp://app/account
(match) => {}
:外部应用调用该应用的url和预设url符合时触发的代码match.$args
:用来获取url中的参数,是json字符串
import { Deeplinks } from '@ionic-native/deeplinks';
constructor(private deeplinks: Deeplinks) { }
//绑定从其他app唤醒该app的事件
this.deeplinks.route({
'/:account': 'LoginPage' //path
}).subscribe((match) => {
// match.$route - the route we matched, which is the matched entry from the arguments to route()
// match.$args - the args passed in the link
// match.$link - the full link data
console.log('accout' + match.$args.account)
}, (nomatch) => {
console.error('Got a deeplink that didn\'t match', JSON.stringify(nomatch));
this.nav.setRoot('LoginPage');
});
在ionic app中打开其他app并传递参数(ANDROID)
- 安装插件
$ ionic cordova plugin add cordova-plugin-inappbrowser
$ npm install --save @ionic-native/in-app-browser
- 修改app.module.ts,将插件引入ionic工程
import { InAppBrowser } from '@ionic-native/in-app-browser';
...
@NgModule({
...
providers: [
...
InAppBrowser
...
]
...
})
- 在需要调用外部app的地方引入下面的代码
import { InAppBrowser } from '@ionic-native/in-app-browser';
constructor(private iab: InAppBrowser) { }
openotherapp(){
let address = 'myapp://app/';
let account = 'test'
this.iab.create(address + account, '_system');
}
Author shengmidetang
LastMod 2018-06-25