离子

时间:2015-08-13 01:12:41

标签: angularjs ionic deep-linking

我使用Custom Url Scheme允许深度链接到我的离子应用。但除了打开应用程序,我希望通过深层链接传递的路径打开正确的状态。以下方法(有效)是否会造成任何问题?或者有更简洁的方法来解决?

测试链接:myapp://somepath

  1. 用户点击链接,打开应用
  2. Custom Url Scheme调用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 个答案:

答案 0 :(得分:1)

离子2有自己的模式,它与Angular 2路由不同。它是DeepLinker,描述为here

答案 1 :(得分:0)

您可以关注these guidelines并使用超时。

您的问题取决于您使用插件的方式和位置。例如,如果您将其与社交共享插件一起使用,那么您必须通过具有共享功能的状态,因此您可能必须更加了解代码的工作方式。