如何将混合应用程序重定向到主页而不是 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 应用程序中的教程页面?的主要内容,如果未能解决你的问题,请参考以下文章