Я использую Пользовательскую схему URL, чтобы разрешить прямые ссылки на мое ионное приложение. Но в дополнение к открытию приложения я хочу, чтобы путь, пройденный по глубокой ссылке, открывал правильное состояние. Вызывает ли приведенный ниже подход (который работает) какие-либо проблемы? Или есть более чистый способ адресации?

Тестовая ссылка: myapp://somepath

  1. Пользователь нажимает ссылку, которая открывает приложение
  2. Пользовательская схема URL вызывает handleOpenUrl(url), что сохраняет somepath в локальное хранилище перед открытием приложения
  3. $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
Rex Salisbury 13 Авг 2015 в 04:12

2 ответа

Ionic 2 имеет свой собственный шаблон, и он отличается от маршрутизации Angular 2. Это DeepLinker, описанный здесь.

1
morrisonbrett 2 Ноя 2016 в 05:11

Вы можете следовать этим рекомендациям, а также использовать тайм-аут.

Ваши проблемы зависят от того, как и где вы используете плагин. Например, если вы используете его с плагином социальных сетей, вам нужно передать состояние с помощью функции общего доступа, и, следовательно, вы, вероятно, должны быть более осведомлены о том, как будет работать код.

0
durron597 14 Авг 2015 в 17:17
1
Было бы неплохо, если бы вы добавили некоторые детали в свой ответ. Ссылки могут быть недоступны через некоторое время.
 – 
S.Spieker
14 Авг 2015 в 11:30