Bmob用戶功能詳解(二)

擴展用戶

上一篇文章中我介紹了怎麼使用BmobSDK進行簡單的用戶註冊、登陸操做。文中咱們是使用BmobSDK默認的BmobUser類來設置用戶名、 密碼註冊登陸的。這是一種很是簡單的用戶對象,只包含了用戶名和密碼兩個屬性,實際開發中,咱們的用戶信息還包含年齡、性別、暱稱等等其餘屬性。這個時候 咱們該怎麼作呢?很簡單,咱們只須要新建一個用戶類繼承自BmobUser,在這個類中擴展其餘咱們須要的用戶屬性。代碼以下:java

public class MyUser extends BmobUser {
    /**
     * 年齡
     */
    private Integer age;    /**
     * 性別
     */
    private Boolean gender;    /**
     * 暱稱
     */
     
    private String nickname;    
    
    public Integer getAge() {        
        return age;
    }    
    
    public void setAge(Integer age) {        
        this.age = age;
    }    
    
    public Boolean getGender() {        
        return gender;
    }    
    
    public void setGender(Boolean gender) {        
        this.gender = gender;
    }    
    
    public String getNickname() {        
        return nickname;
    }    
    
    public void setNickname(String nickname) {        
        this.nickname = nickname;
    }
}

註冊

那麼接下來進行用戶註冊和登陸有什麼區別嗎?其實沒什麼變化,只是此次咱們再也不使用BmobUser類,而是使用咱們新建立的MyUser類來建立用戶對象進行註冊和登陸。代碼以下:緩存

// 使用BmobSDK提供的註冊功能MyUser myUser = new MyUser();
myUser.setUsername("abc");
myUser.setPassword("123456");
myUser.setNickname("鳴人");
myUser.setAge(18);
myUser.setGender(true);//true爲男,false爲女
myUser.signUp(this, new SaveListener() {        
    @Override
     public void onSuccess() {
          Toast.makeText(CustomUserSignUpActivity.this, "註冊成功", Toast.LENGTH_SHORT).show();
     }     
     
     @Override
     public void onFailure(int i, String s) {
          Toast.makeText(CustomUserSignUpActivity.this, "註冊失敗", Toast.LENGTH_SHORT).show();
     }
});

以上代碼中,我建立了myUser對象,除了設置用戶名和密碼以外,還設置了暱稱、年齡和性別,而後一樣是調用signUp方法進行註冊,這和上一篇文章中的註冊方法是同樣的。只不過此次註冊成功後在Bmob後臺中User表發生了一些變化,先看圖:ide


User表中比以前多出了三個數據列(gender、nickname、age),這就是MyUser類擴展的三個屬性。從這裏能夠看出,數據表的列名稱是和MyUser類的屬性名稱對應的。在MyUser類中增長新的屬性,註冊時會同步到Bmob後臺的數據表中。this

注意spa

這裏須要注意一點,以前註冊的「稻草人」這個帳號在登陸成功後getGender、getNickname、getAge是返回null的。
 因此須要注意管理好繼承自BmobUser類和BmobObject類的屬性,在肯定好各個屬性後,儘可能不要修改。若是特殊狀況新增了屬性,在get的時候記得要判斷爲null的狀況。code

登陸

登陸和上一篇文章中介紹的同樣,可使用BmobUser也可使用MyUser進行登陸,下面是使用MyUser對象進行的登陸操做。對象

MyUser myUser = new MyUser();
myUser.setUsername("abc");
myUser.setPassword("123456");
myUser.login(this, new SaveListener() {     
    @Override
     public void onSuccess() {
          Toast.makeText(CustomUserSignUpActivity.this, "登陸成功", Toast.LENGTH_SHORT).show();
     }     
     
     @Override
     public void onFailure(int i, String s) {
          Toast.makeText(CustomUserSignUpActivity.this, "登陸失敗", Toast.LENGTH_SHORT).show();
     }
});

本地用戶信息
說完了註冊和登陸功能,咱們來好好解釋下BmobUser這個類。BmobUser類是繼承自BmobObject類的,它存在的主要目的就是爲了解決應 用中關於用戶系統的相關功能(註冊、登陸、修改密碼…)。在BmobUser類中實現了signUp(註冊)和login(登陸)兩個方法,這兩個方法在 用戶註冊或登陸成功以後都會在本地緩存該用戶的信息(除密碼外),這裏咱們稱它爲本地用戶信息或緩存用戶信息。
爲何要緩存這個用戶信息呢?主要目的有二:繼承

  1. 避免重複登陸開發

  2. 方便獲取、展現用戶信息get

那麼該怎樣獲取這個緩存在本地的用戶信息呢?BmobUser類中的靜態方法getCurrentUser能夠很方便的將本地的用戶信息提取出來用一個BmobUser對象返回。

MyUser user = BmobUser.getCurrentUser(this, MyUser.class);

以上代碼中,第二個參數指定以MyUser.class類型將本地用戶信息返回。

最後我仍是提一下,在什麼狀況下使用這個本地用戶信息吧。好比通常應用在啓動的時候須要判斷用戶是否已登陸,若是登陸了則能夠正常進入使用,未登陸則跳轉到登陸or註冊界面。簡單的代碼以下:

MyUser user = BmobUser.getCurrentUser(this, MyUser.class);
if(null == user){    
    // 未登陸,跳轉到登陸Or註冊界面
}else{
    // 已登陸,正在進入應用
}

在應用中須要顯示當前登陸用戶的信息時,一樣是getCurrentUser,而後get各屬性的值進行展現:

MyUser user = BmobUser.getCurrentUser(this, MyUser.class);
user.getNickname();
user.getAge();
....

總結

擴展BmobUser類能讓Bmob用戶功能更加符合個性化的業務需求。同時,結合本地用戶信息能更方便的展現登陸用戶信息,避免重複登陸和過多的邏輯判斷。

相關文章
相關標籤/搜索