簡體   English   中英

在用戶首次打開應用程序時處理登錄屏幕的最佳方法是什么?

[英]What's the best way to handle showing a sign in screen the first time a user opens an app?

目前,我正在構建一個iOS應用,並嘗試找出呈現必要屏幕的最佳方法。

該應用程序是基於標簽的應用程序,但在用戶登錄后,該標簽欄及其子級才應該可見。

當前,在調用application:didFinishLaunchingWithOptions時, application:didFinishLaunchingWithOptions程序委托將tabbarcontroller設置為根視圖控制器,然后,如果需要,選項卡欄控制器中的第一個控制器將顯示登錄視圖控制器。

這種方法的問題在於選項卡欄中的第一個視圖控制器非常忙。 它向外部API發出一些請求,其中一些請求首先需要有效的會話令牌。

除非有人可以提出更好的解決方案,否則我想做的是檢查application:didFinishLaunchingWithOptions是否存在有效的會話ID。 如果存在,則將tabBarController設置為rootViewController;如果沒有,則將登錄控制器設置為根視圖控制器。

有人能看到這個想法有什么陷阱嗎?

使用NSUserDefault來存儲布爾值,這將是第一次,登錄屏幕將與make bool value一起顯示為false。 因此不會出現第二個登錄屏幕

將此添加到application:didFinishLaunchingWithOptions方法中:

 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTime"];
 [[NSUserDefaults standardUserDefaults] synchronize];

現在

 if([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstTime"] == YES)
 {
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FirstTime"];
    [[NSUserDefaults standardUserDefaults] synchronize];
   //login screen
 } 

我已經在我的應用程序中使用了這兩種方法,而您所描述的第一種方法是最好的方法,因為您無需弄亂更改視圖控制器層次結構。 您確實應該在NSUserDefaults中存儲一個布爾值,並在第一個視圖控制器中存儲另一個布爾值。 檢查選項卡的第一個視圖控制器的viewDidLoad方法中的userDefault bool值,以查看用戶是否已通過身份驗證;如果未通過身份驗證,則將第一個視圖控制器的bool值設置為適當的值,並且不執行您需要通過第三方API執行的操作,進行身份驗證,將布爾值設置為適當的值,然后返回第三方API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM