目前我正在开发使用离子的混合应用程序。所以我的应用程序通常包含一个介绍视图,在介绍视图之后它直接进入主页。当我杀死应用程序时,我需要再次启动时显示主页而不是教程视图。由于我是一名原生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('/');
}
这与状态变化有关吗?
答案 0 :(得分:1)
您可以根据条件使用以下加载Root页面的概念。
根据您的要求,您需要首次加载教程页面导航流程,在第二次加载时,您不需要将教程页面作为第一页。
因此,如下所述。
第1步:在rootPage: any;
页面中添加一个变量app.component.ts
。
第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
是决定您的应用加载的标志 第一次。
以上标志,您可以存储在存储数据库中,并且首次应用程序加载时,在数据库中将其设为True。
希望这可以帮助您在应用中加载条件根页面。