簡體   English   中英

管理已登錄IOS App的用戶

[英]Manage User Logged in IOS App

我是一名初級IOS開發人員,我很難理解IOS APP中用戶管理的某些方面。

我已經將facebook和google +添加到我的LoginView中:

https://drive.google.com/file/d/0B_3MBkUrHOuRS2FEQW9rWUZkUkU/view?usp=sharing

Facebook和Google將數據發送回我的應用程序。

我應該怎么做才能訪問其他視圖中的用戶數據。 如何通過我的應用程序管理所有這些用戶數據。

希望您能為Regards ADS提供幫助

順便說一句:我曾經工作很快,但我可以解釋OBJ-C

1º編輯:----------------------------------------------- -------------------------

將我的登錄視圖更改為:

 //MARK: Facebook Delegate Methods

func loginViewShowingLoggedInUser(loginView : FBLoginView!) {
    println("User Logged In")
}

func loginViewFetchedUserInfo(loginView : FBLoginView!, user: FBGraphUser) {
    // Store Facebook User Id
    userAccountManager.setUserId(user.objectForKey("id") as String)
    //Store Facebook User Name
    userAccountManager.setUserName(user.name)
    //Store Facebook E-mail account
    userAccountManager.setUserMail(user.objectForKey("email") as String)
    //MARK: FACEBOOK Session Token -------------------------------------------------------------<
    userAccountManager.setUserToken(FBSession.activeSession().accessTokenData.accessToken)

    userAccountManager.setUserLoggedIn(true)
}

func loginViewShowingLoggedOutUser(loginView : FBLoginView!) {
    println("User Logged Out")
}

func loginView(loginView : FBLoginView!, handleError:NSError) {
    println("Error: \(handleError.localizedDescription)")
}

//MARK: Google+ Methods

func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!) {
   storeUserData()
}


func storeUserData(){
    //Storing Google userId
    userAccountManager.setUserId(signIn?.userID as String!)
    //Storing Google User Name
    userAccountManager.setUserName(signIn?.googlePlusUser.valueForKey("displayName") as String)
    //Soting google e-mail account
    userAccountManager.setUserMail(signIn?.userEmail as String!)
    //MARK: GOOGLE Session Token -------------------------------------------------------------<
    userAccountManager.setUserToken(signIn?.idToken as String!)

    userAccountManager.setUserLoggedIn(true)
}

func didDisconnectWithError(error: NSError!) {
    println("Google Error: \(error)")
}

並將數據存儲在客戶管理器中。

class AccountManager{

var userDefaults = NSUserDefaults()


func setUserId(userId : String){
    userDefaults.setValue(userId, forKey: "USERID_KEY")
}

func setUserLoggedIn(loggedIn : Bool){
   userDefaults.setBool(loggedIn, forKey: "USER_LOGGED_IN_KEY")
}

func setUserName(userName : String){
    userDefaults.setValue(userName, forKey: "USERNAME_KEY")
}

func setUserMail(userMail : String){
    userDefaults.setValue(userMail, forKey: "USERMAIL_KEY")
}

func setUserToken(userToken :String){
    userDefaults.setValue(userToken, forKey: "USERTOKEN_KEY")
}

func getUserToken() -> String{
    return userDefaults.valueForKey("USERTOKEN_KEY") as String
}

func isUserLoggedIn() -> Bool{
    return userDefaults.valueForKey("USER_LOGGED_IN_KEY") as Bool
}

func getUserName() -> String {
    return userDefaults.valueForKey("USERNAME_KEY") as String
}

func getUserMail() -> String {
    return userDefaults.valueForKey("USERMAIL_KEY") as String
}
func getUserID() -> String {
    return userDefaults.valueForKey("USERID_KEY") as String
}

每當我需要用戶數據時,我是否都可以通過segue客戶經理進行傳遞?

最好的辦法是NSUserDefaults的使用保存用戶數據,這樣就可以非常容易地調用這些數據下面是一個簡短的介紹

我過去完成此操作的方式是創建一個AccountManager對象,該對象處理所有相關的用戶參數的存儲/檢索。

在幕后,此AccountManager對象可以使用NSUserDefaults來存儲和檢索帳戶數據,例如用戶名,登錄狀態等。

一個簡單的例子是這樣的:

+ (void)setUserLoggedIn:(BOOL)loggedIn {
    [[NSUserDefaults standardUserDefaults] setBool:loggedIn forKey:@"USER_LOGGED_IN_KEY"];
}

+ (BOOL)isUserLoggedIn {
    return [[NSUserDefaults standardUserDefaults] boolForKey:@"USER_LOGGED_IN_KEY"];
}

+ (void)setUsername:(NSString *)username {
    [[NSUserDefaults standardUserDefaults] setValue:username forKey:@"USERNAME_KEY"];
}

+ (NSString *)getUsername {
    return [[NSUserDefaults standardUserDefaults] valueForKey:@"USERNAME_KEY"];
}

使用上面的示例,在用戶成功登錄后的登錄屏幕中,可以調用[AccountManager setUserLoggedIn:YES]; ,或者如果他們以后注銷,則可以調用[AccountManager setUserLoggedIn:NO];

可以說,根據用戶是否登錄,有些視圖可能會改變,您可以通過調用[AccountManager isUserLoggedIn];輕松確定[AccountManager isUserLoggedIn]; 並進行相應的格式化。

擁有一個處理所有這些東西的對象而不是訪問所有視圖中的NSUserDefaults值的好處是,您擁有一個集中的位置來設置和返回所有數據,因此,如果有任何更改,您只需要更改它即可在一個地方。 應用程序的版本1可能僅使用電子郵件進行注冊/登錄,而版本2可能使用電子郵件,facebook,google等,並且您可能需要根據自己的需要調整為這些值保存的值-但您只需要在該類中進行更改即可。

同樣值得注意的是,如果您存儲密碼,則不應使用NSUserDefaults,而應使用鑰匙串,快速的Google搜索無疑會為您提供許多教程/信息。

暫無
暫無

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

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