У меня есть приложение с Ionic v3, и я пытаюсь внедрить механизм глубоких ссылок.
Проблема заключается в том, что, если я попытаюсь использовать URL-адрес с включенным любым из сегментов страницы, URL-адрес будет изменен на этот сегмент раньшемеханизм глубоких ссылок включен.Вот что я имею в виду:
У меня есть страница с именем users, которая представляет собой список пользователей и подробности пользователя:
@IonicPage({
name: 'UsersPage',
segment: 'users'
})
@IonicPage({
name: 'UserDetailPage',
segment: 'user-detail/:id'
})
Теперь, когда я создал диплинк: "http://hostname/#/users/user-detail/:id"
@Injectable()
export class DeeplinksProvider {
private router: any;
constructor(
protected platform: Platform,
protected deeplinks: Deeplinks,
public app: App,
) {
}
subscribe() {
this.platform.ready().then(() => {
console.log('Successfully subscribed to deeplinking');
this.router = this.deeplinks.route({
'/users/user-detail/:id': 'UserDetailPage',
});
this.router.subscribe((match) => {
const nav = this.app.getRootNav();
console.log("Deeplinking matched route:");
console.log(match);
this.redirectToRoute(nav, match);
},
(nomatch) => {
console.log("Deeplinking nomatch route:");
console.log(nomatch);
});
});
}
...
Все работает, когда я пытаюсь открыть этот URL, когда приложение уже запущено, но когда я пытаюсь запустить приложение с этого URL, оно сначала изменяется с:
http://hostname/#/users/user-detail/1234
до
http://hostname/#/users
и после того, как это уже произошло, я вижу в консоли все свои журналы о глубоких ссылках:
Successfully subscribed to deeplinking
Deeplinking matched route:
{url: "http://localhost/#/users", path: "/", host: "localhost", fragment: "#/users"}
Есть ли способ отключить навигацию по этому сегменту при запуске или исправить это?
Мои версии изpackage.json:
"dependencies": {
"@angular/animations": "4.4.7",
"@angular/common": "4.4.7",
"@angular/compiler": "4.4.7",
"@angular/compiler-cli": "4.4.7",
"@angular/core": "4.4.7",
"@angular/forms": "4.4.7",
"@angular/http": "4.4.7",
"@angular/platform-browser": "4.4.7",
"@angular/platform-browser-dynamic": "4.4.7",
"@angular/tsc-wrapped": "4.4.7",
"@auth0/angular-jwt": "^1.0.0",
"@ionic-native/camera": "4.3.3",
"@ionic-native/core": "^4.3.3",
"@ionic-native/deeplinks": "4.3.0",
"@ionic-native/dialogs": "4.3.3",
"@ionic-native/fcm": "4.3.3",
"@ionic-native/firebase": "4.3.3",
"@ionic-native/in-app-browser": "4.3.3",
"@ionic-native/keyboard": "4.3.3",
"@ionic-native/local-notifications": "4.3.3",
"@ionic-native/market": "4.3.3",
"@ionic-native/network": "4.3.3",
"@ionic-native/splash-screen": "4.3.3",
"@ionic-native/status-bar": "4.3.3",
"@ionic/storage": "2.0.1",
"angular2-jwt": "^0.2.3",
"angular2-moment": "^1.8.0",
"autoprefixer": "^7.1.2",
"cordova-android": "6.4.0",
"cordova-browser": "5.0.4",
"cordova-ios": "4.5.5",
"cordova-multidex": "git+https://github.com/jwall149/cordova-multidex.git",
"cordova-plugin-appavailability": "0.4.2",
"cordova-plugin-badge": "^0.8.8",
"cordova-plugin-camera": "^4.0.3",
"cordova-plugin-compat": "^1.2.0",
"cordova-plugin-console": "^1.1.0",
"cordova-plugin-device": "^1.1.7",
"cordova-plugin-dialogs": "^1.3.4",
"cordova-plugin-file": "^6.0.1",
"cordova-plugin-file-transfer": "^1.7.1",
"cordova-plugin-firebase": "^2.0.5",
"cordova-plugin-image-resizer": "^1.0.0",
"cordova-plugin-inappbrowser": "^1.7.2",
"cordova-plugin-ionic": "^5.2.6",
"cordova-plugin-ionic-webview": "^2.0.3",
"cordova-plugin-local-notification": "^0.9.0-beta.2",
"cordova-plugin-market": "^1.2.0",
"cordova-plugin-network-information": "^2.0.1",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.3",
"cordova-sqlite-storage": "^2.6.0",
"deepmerge": "^1.5.1",
"ionic-angular": "^3.9.0",
"ionic-plugin-deeplinks": "^1.0.17",
"ionic-plugin-keyboard": "^2.2.1",
"ionicons": "3.0.0",
"me.tonny.cordova.plugins.multidex": "https://github.com/jwall149/cordova-multidex",
"moment": "^2.20.1",
"ng2-validation": "^4.2.0",
"rxjs": "^5.4.3",
"stage": "1.0.0",
"sw-toolbox": "3.4.0",
"zone.js": "^0.8.17"
},
"devDependencies": {
"@ionic/app-scripts": "3.2.0",
"@types/node": "^10.12.0",
"@types/cordova": "0.0.34",
"cross-env": "^5.0.5",
"typescript": "^2.4.2",
"webpack-merge": "^4.1.0",
"ws": "3.3.2"
},