Я использую Пользовательскую схему URL, чтобы разрешить прямые ссылки на мое ионное приложение. Но в дополнение к открытию приложения я хочу, чтобы путь, пройденный по глубокой ссылке, открывал правильное состояние. Вызывает ли приведенный ниже подход (который работает) какие-либо проблемы? Или есть более чистый способ адресации?
Тестовая ссылка: myapp://somepath
- Пользователь нажимает ссылку, которая открывает приложение
- Пользовательская схема URL вызывает
handleOpenUrl(url)
, что сохраняетsomepath
в локальное хранилище перед открытием приложения $ionicplatform.on('resume'...)
вызываетcheckExternalUrl
, который проверяет локальное хранилище на наличиеexternalUrl
и, если находит сохраненный там путь, переходит к этому пути, используяwindow.location.href
Www/приложение/js/app.js:
function handleOpenURL(url) {
var path = url.slice(8) // strips away myapp://
window.localStorage.setItem("externalUrl", path);
}
angular.module('myapp', ['ionic', 'ngCordova'])
.run(function($rootScope, $ionicPlatform, $localstorage) {
$ionicPlatform.ready(function() {
function checkExternalUrl(){
var externalUrl = $localstorage.get('externalUrl', false)
if (externalUrl){
window.location.href = '#' + externalUrl
$localstorage.removeItem('externalUrl')
}
}
$ionicPlatform.on('resume', function(){
checkExternalUrl()
})
});
});
2 ответа
Ionic 2 имеет свой собственный шаблон, и он отличается от маршрутизации Angular 2. Это DeepLinker, описанный здесь.
Вы можете следовать этим рекомендациям, а также использовать тайм-аут.
Ваши проблемы зависят от того, как и где вы используете плагин. Например, если вы используете его с плагином социальных сетей, вам нужно передать состояние с помощью функции общего доступа, и, следовательно, вы, вероятно, должны быть более осведомлены о том, как будет работать код.
Похожие вопросы
Новые вопросы
angularjs
Используйте для вопросов об AngularJS (1.x), JavaScript-фреймворке с открытым исходным кодом. НЕ используйте этот тег для Angular 2 или более поздних версий; вместо этого используйте тег [angular].