首页 > 解决方案 > ionic cordova deepllink 未触发设备上的订阅

问题描述

所以基本上我有一个带有 Angular 8 和 Cordova 的 ionic 3 应用程序。在浏览器上一切正常,deeplink.route 和 deeplinks.routeWithNavController 工作正常,错误消息显示未找到匹配项。

在android上虽然不是这样。什么都没有显示,没有任何消息。几乎就像我的设备上没有发生对深层链接的订阅一样。

用 ionic cordova run android 测试了这个。

这是代码:

constructor(
  public events: Events, 
  public kidsDb: Sqlite, 
  public device: Device, 
  public platform: Platform, 
public commandHandler: CommandHandler,
public statusBar: StatusBar, 
  public splashScreen: SplashScreen, 
  private deeplinks: Deeplinks,
  private translate: TranslateService) {
    this.platform.ready().then(() => {
        this.setDeepkLinkRoutes();
        
        this.statusBar.styleDefault();
        this.splashScreen.hide();
    });
}

private setDeepkLinkRoutes() {
  this.deeplinks.routeWithNavController(this.nav, {
    '/lost-password': LostPasswordPage,
    '/about': LostPasswordPage,
  }).subscribe((match) => {
    this.commandHandler.showAlert('success nav', match);

  }, (nomatch) => {
    this.commandHandler.showAlert('Error nav no match', nomatch);
  });

  this.deeplinks.route({
    '/lost-password': LostPasswordPage,
    '/about': LostPasswordPage,
  }).subscribe(match => {
    this.commandHandler.showAlert('success', match);
  }, nomatch => {
    this.commandHandler.showAlert('Error no match', nomatch);
  });
} 

我的 config.xml 文件具有以下配置:

<plugin name="ionic-plugin-deeplinks" spec="^1.0.22">
    <variable name="URL_SCHEME" value="myApp" />
    <variable name="DEEPLINK_SCHEME" value="https" />
    <variable name="DEEPLINK_HOST" value="my-domain.com" />
    <variable name="ANDROID_PATH_PREFIX" value="/about" />
    <variable name="ANDROID_2_PATH_PREFIX" value="/" />
    <variable name="ANDROID_3_PATH_PREFIX" value="/" />
    <variable name="ANDROID_4_PATH_PREFIX" value="/" />
    <variable name="ANDROID_5_PATH_PREFIX" value="/" />
    <variable name="DEEPLINK_2_SCHEME" value=" " />
    <variable name="DEEPLINK_2_HOST" value=" " />
    <variable name="DEEPLINK_3_SCHEME" value=" " />
    <variable name="DEEPLINK_3_HOST" value=" " />
    <variable name="DEEPLINK_4_SCHEME" value=" " />
    <variable name="DEEPLINK_4_HOST" value=" " />
    <variable name="DEEPLINK_5_SCHEME" value=" " />
    <variable name="DEEPLINK_5_HOST" value=" " />
</plugin>
<universal-links>
    <host name="my-domain.com" scheme="https">
        <path url="/about" />
        <path url="/lost-password" />
    </host>
</universal-links>

我的 package.json 具有以下依赖项。

"dependencies": {
"@angular/common": "8.2.2",
"@angular/compiler": "8.2.2",
"@angular/compiler-cli": "8.2.2",
"@angular/core": "8.2.2",
"@angular/forms": "8.2.2",
"@angular/http": "7.2.15",
"@angular/platform-browser": "8.2.2",
"@angular/platform-browser-dynamic": "8.2.2",
"@ionic-native/app-version": "^5.29.0",
"@ionic-native/barcode-scanner": "^5.30.0",
"@ionic-native/call-number": "5.12.0",
"@ionic-native/camera": "^5.12.0",
"@ionic-native/core": "5.12.0",
"@ionic-native/deeplinks": "^5.30.0",
"@ionic-native/device": "5.12.0",
"@ionic-native/network": "^5.12.0",
"@ionic-native/splash-screen": "5.12.0",
"@ionic-native/sqlite": "^5.12.0",
"@ionic-native/status-bar": "5.12.0",
"@ionic-native/wheel-selector": "^5.12.0",
"@ionic/app-scripts": "^3.2.4",
"@ionic/cli": "^6.12.3",
"@ionic/storage": "2.2.0",
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0",
"@types/jasmine": "^3.4.0",
"@types/node": "^12.7.2",
"@types/pouchdb": "6.4.0",
"ajv": "^6.10.2",
"at-least-node": "^1.0.0",
"cordova-android": "^7.1.4",
"cordova-browser": "^5.0.4",
"cordova-ios": "^5.1.1",
"cordova-plugin-add-swift-support": "^2.0.2",
"cordova-plugin-app-version": "^0.1.9",
"cordova-plugin-camera": "^4.1.0",
"cordova-plugin-compat": "^1.2.0",
"cordova-plugin-console": "^1.1.0",
"cordova-plugin-device": "^2.0.3",
"cordova-plugin-ios-permissions": "https://github.com/MBuchalik/cordova-plugin-ios-permissions.git#v1.1.1",
"cordova-plugin-media-capture": "*",
"cordova-plugin-network-information": "^2.0.2",
"cordova-plugin-splashscreen": "^6.0.0",
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-whitelist": "^1.3.4",
"cordova-sqlite-storage": "^3.4.1",
"cordova-wheel-selector-plugin": "^1.1.7",
"dd-trace": "^0.14.0",
"font-awesome": "^4.7.0",
"ionic-angular": "3.9.8",
"ionic-plugin-deeplinks": "^1.0.22",
"ionic-plugin-keyboard": "^2.2.1",
"ionicons": "4.6.2",
"leveldown": "^5.1.1",
"moment": "^2.24.0",
"nan": "^2.14.0",
"ng2-filter-pipe": "^0.1.10",
"phonegap-plugin-barcodescanner": "^8.1.0",
"pouchdb": "^7.1.1",
"pouchdb-adapter-cordova-sqlite": "^2.0.6",
"rxjs": "6.5.2",
"rxjs-compat": "^6.5.2",
"sw-toolbox": "3.6.0",
"typescript-collections": "1.3.2",
"zone.js": "0.10.2"

},

"cordova": {
"plugins": {
  "cordova-plugin-console": {},
  "cordova-plugin-device": {},
  "cordova-plugin-statusbar": {},
  "ionic-plugin-keyboard": {},
  "cordova-plugin-network-information": {},
  "cordova-wheel-selector-plugin": {},
  "cordova-sqlite-storage": {},
  "cordova-plugin-camera": {
    "CAMERA_USAGE_DESCRIPTION": "App would like to access the camera.",
    "PHOTOLIBRARY_USAGE_DESCRIPTION": "App would like to access the library.",
    "ANDROID_SUPPORT_V4_VERSION": "27.+"
  },
  "cordova-plugin-splashscreen": {},
  "cordova-plugin-media-capture": {
    "CAMERA_USAGE_DESCRIPTION": "App would like to access the camera.",
    "MICROPHONE_USAGE_DESCRIPTION": "App would like to access the microphone.",
    "PHOTOLIBRARY_USAGE_DESCRIPTION": "App would like to access the library."
  },
  "cordova-plugin-app-version": {},
  "cordova-plugin-ios-permissions": {},
  "ionic-plugin-deeplinks": {
    "URL_SCHEME": "myApp",
    "DEEPLINK_SCHEME": "https",
    "DEEPLINK_HOST": "my-domain.com",
    "ANDROID_PATH_PREFIX": "/",
    "ANDROID_2_PATH_PREFIX": "/",
    "ANDROID_3_PATH_PREFIX": "/",
    "ANDROID_4_PATH_PREFIX": "/",
    "ANDROID_5_PATH_PREFIX": "/",
    "DEEPLINK_2_SCHEME": " ",
    "DEEPLINK_2_HOST": " ",
    "DEEPLINK_3_SCHEME": " ",
    "DEEPLINK_3_HOST": " ",
    "DEEPLINK_4_SCHEME": " ",
    "DEEPLINK_4_HOST": " ",
    "DEEPLINK_5_SCHEME": " ",
    "DEEPLINK_5_HOST": " "
  },
  "cordova-plugin-whitelist": {},
  "phonegap-plugin-barcodescanner": {
    "ANDROID_SUPPORT_V4_VERSION": "27.+"
  }
},
"platforms": [
  "browser",
  "ios",
  "android"
]

}

知道我缺少什么吗?如果我运行 ionic serve,它会在网站上触发两次深度链接的错误处理,并显示以下消息:“错误导航不匹配”和“错误不匹配”。手机,什么都没有。

标签: androidcordovaionic-framework

解决方案


推荐阅读