如何将混合应用程序重定向到主页而不是 Ionic ios 应用程序中的教程页面?

Posted

技术标签:

【中文标题】如何将混合应用程序重定向到主页而不是 Ionic ios 应用程序中的教程页面?【英文标题】:How to redirect a hybrid application to home page instead of tutorial page in Ionic ios application? 【发布时间】: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('/');
  

与状态变化有关吗?

【问题讨论】:

【参考方案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 中可用

以上是关于如何将混合应用程序重定向到主页而不是 Ionic ios 应用程序中的教程页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制将所有 404(或每个页面,无论是不是无效)重定向到主页?

Vue路由器在重新加载时重定向到主页

刷新浏览器时如何将应用程序重定向到主页?

如何将已通过身份验证的用户从登录页面重定向到主页

空搜索重定向到主页

Web - 重定向访问目录而不是文件的人员