快速开发之-用Bmob实现APP用户功能(二)

上一篇文章中我介绍了怎么使用BmobSDK进行简单的用户注册、登录操作。

文中我们是使用BmobSDK默认的BmobUser类来设置用户名、密码注册登录的。这是一种非常简单的用户对象,只包含了用户名和密码两个属性,实际开发中,我们的用户信息还包含年龄、性别、昵称等等其他属性。

这个时候我们该怎么做呢?很简单,我们只需要新建一个用户类继承自BmobUser,在这个类中扩展其他我们需要的用户属性。代码如下:
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表发生了一些变化,先看图:
User表中比之前多出了三个数据列(gender、nickname、age),这就是MyUser类扩展的三个属性。
从这里可以看出,数据表的列名称是和MyUser类的属性名称对应的。在MyUser类中增加新的属性,注册时会同步到Bmob后台的数据表中。
注意

这里需要注意一点,之前注册的“稻草人”这个账号在登录成功后getGender、getNickname、getAge是返回null的。
所以需要注意管理好继承自BmobUser类和BmobObject类的属性,在确定好各个属性后,尽量不要修改。如果特殊情况新增了属性,在get的时候记得要判断为null的情况。

登录
登录和上一篇文章中介绍的一样,可以使用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(登录)两个方法,这两个方法在用户注册或登录成功之后都会在本地缓存该用户的信息(除密码外),这里我们称它为本地用户信息或缓存用户信息。
为什么要缓存这个用户信息呢?主要目的有二:
  • 避免重复登录
  • 方便获取、展示用户信息
那么该怎样获取这个缓存在本地的用户信息呢?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用户功能更加符合个性化的业务需求。同时,结合本地用户信息能更方便的展示登录用户信息,避免重复登录和过多的逻辑判断。
这里是官网:www.bmob.cn,大家可以尝试做起来,这个是免费的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容