在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');
}