【问题标题】:How to redirect a hybrid application to home page instead of tutorial page in Ionic ios application?如何将混合应用程序重定向到主页而不是 Ionic ios 应用程序中的教程页面?
【发布时间】:2018-03-22 11:18:26
【问题描述】:

目前我正在使用 ionic 开发一个混合应用程序。所以我的应用程序通常包含一个介绍视图,在介绍视图之后它直接进入主页。当我杀死应用程序时,我需要在再次启动时显示主页而不是教程视图。由于我是本地 iOS 开发人员,我很清楚如何在本地 ios 代码中管理它,如下所示:

        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
if (NSUserDefaults.standardUserDefaults().objectForKey("login") == nil)
        {
            NSUserDefaults.standardUserDefaults().setBool(false, forKey: "login")
        }
        if (NSUserDefaults.standardUserDefaults().boolForKey("login") == true)
        {

            do {
                let arr1 = try UserProfileDataHelper.find("1")
                if arr1?.Type == "Customer" {
                    currentUser = "Customer"
                    screenlaunch("MENU")
                }else{
                    currentUser = "Store"
                    screenlaunch("HOME")
                }

            } catch _{}


        }

         return true
    }

 func screenlaunch(str : String )
    {
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

            let homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier(str)
            let navigationController :UINavigationController = UINavigationController(rootViewController: homeViewController)
            navigationController.navigationBarHidden = true
            window!.rootViewController = nil
            window!.rootViewController = navigationController
            window?.makeKeyWindow()

    }

如何在离子应用中实现同样的效果。请对此有一个想法。经过我的研究,我发现我的老同事曾经使用过:

   console.log("didTutorial: "+$localStorageProvider.get('didTutorial'));
  if( $localStorageProvider.get('didTutorial') ){

    $urlRouterProvider.otherwise('/app/hero');
  }
  else{

    $urlRouterProvider.otherwise('/');
  }

与状态变化有关吗?

【问题讨论】:

    标签: ios iphone ionic-framework hybrid-mobile-app


    【解决方案1】:

    您可以使用以下基于条件加载根页面的概念。

    根据您的要求,您第一次需要加载教程页面导航流程,而在第二次加载时,您不需要将教程页面作为第一页。

    因此,请按照下面的说明进行操作。

    第一步:在你的app.component.ts页面中添加一个变量rootPage: any;

    第 2 步:将该 rootPage 绑定到您的 app.html 文件中,该文件决定在您的应用启动时将加载哪个根页面。

    <ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>
    

    第 3 步:现在在您的 app.component.ts 页面检查用户是否看到教程页面的条件,并基于该分配 rootPage,如下所示。

    initializeApp() {
        this.platform.ready().then(() => {
          //retrieve isAppRunFirstTime from DB storage 
    
          if (!isAppRunFirstTime) {
              this.rootPage = TutorialPage;
          } else {
              this.rootPage = HomePage;
           }
        }
      }
    

    注意:isAppRunFirstTime 是决定您的应用程序正在加载的标志 第一次。

    您可以将上述标志存储在存储数据库中,并在第一次应用加载时使其在您的数据库中为真。

    希望这将帮助您在应用中加载条件根页面。

    【讨论】:

    • isAppRunFirstTime 我可以将它存储在本地存储中吗?我在这里没有使用任何数据库:)
    • console.log("didTutorial: "+$localStorageProvider.get('didTutorial')); if( $localStorageProvider.get('didTutorial') ){ $urlRouterProvider.otherwise('/app/hero'); } else{ $urlRouterProvider.otherwise('/');当我杀死应用程序并再次启动应用程序时,还有一件事会进入 if 循环而不是 else 循环,那么为什么不将它定向到 '/app/hero' 呢?请告诉
    • '/app/hero' 是我的主页。
    • 是的,您可以将其存储到本地存储中
    • 它在你的 scr/app/app.component.ts 中可用
    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 2017-11-10
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多