智能厨房重构-使用Bmob后端云实现用户注册登录的功能。
2017-08-14 06:20
1036 查看
(转载)http://blog.csdn.net/u014316462/article/details/52204530
上一篇智能厨房重构-用ActiveAndroid来实现收藏的功能介绍了本地数据库的实现,有了第一个博友评论说还不错,受益良多,很感动,因为这让我感觉到了技术分享的力量,我们都不是一个人孤军奋战,我们是一个互相交流的群体,因为分享,我们会变得更好。今天给大家介绍一下使用Bmob后端云搭建自己的网上服务器,以后再也不要求着搞服务器的了,自己一个人搞定一个客户端。因为此处篇幅比较多,所以我决定分两篇博客进行讲解,欢迎看下篇 智能厨房重构-使用Bmob后端云实现朋友圈的功能。
首先你需要注册一个Bmob的账号,进入官网即可,注册一个自己的App,如何在后台建立属于自己的表,基本都是傻瓜式建表了,不需要使用SQL语言,来看一下我建的表:
表搭建好了,服务器这边就完事了,就是如此简单。
搞完服务器,接下来就需要将bmob集成到我们的客户端中来了,其实我也是官网文档的搬运工,我就将最主要的步骤介绍一下:
去官网上面下载这两个JAR包,然后再build gradle中添加两个依赖,官网文档中还有直接导入的方式,给个链接http://docs.bmob.cn/data/Android/a_faststart/doc/index.html#初始化BmobSDK,都是比较简单的。
数据类型
目前为止,Bmob支持的数据类型:String、Integer、Float、Short、Byte、Double、Character、Boolean、Object、Array。
同时也支持BmobObject、BmobDate、BmobGeoPoint、BmobFile特有的数据类型。
添加数据
添加数据使用BmobObject对象的save方法,就可以将当前对象的内容保存到Bmob服务端。
例如,你现在要保存一条游戏分数的记录,代码如下:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
删除数据
从服务器删除对象。例如:将GameScore表中objectId为dd8e6aff28的数据删除。
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
查询数据
当我们知道某条数据的objectId时,就可以根据objectId直接获取单条数据对象。例如:查询objectId为a203eba875的人员信息。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
修改数据
更新一个对象也是非常简单。例如:将GameScore表中objectId为0c6db13c的游戏分数修改为77.
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
函数都比较简单好用,如果想要了解更多,请直接看官网文档。
现在服务器和客户端的环境都配置好,现在我们可以开始实战了。我们要实现的注册和登录的功能,首先来看一下流程
使用Bmob,必须遵守的一个规则就是,你的实体对象名必须和表名相同,表中的每一个列都对应一个属性,必须继承BmobObject这个类,这一点很不好,假如和ActiveAndroid连用的话,就冲突了,因为Java中不能多重继承,比如上面的用户表对应实体类就是:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
所有和服务器的数据请求和提交都在上面了,都很简单,都是利用了上面的函数。
详细的项目代码地址:https://github.com/gxl1240779189/ReIntelligentKitchen,如果决定效果还可以,请点个赞支持一下,多谢了。
上一篇智能厨房重构-用ActiveAndroid来实现收藏的功能介绍了本地数据库的实现,有了第一个博友评论说还不错,受益良多,很感动,因为这让我感觉到了技术分享的力量,我们都不是一个人孤军奋战,我们是一个互相交流的群体,因为分享,我们会变得更好。今天给大家介绍一下使用Bmob后端云搭建自己的网上服务器,以后再也不要求着搞服务器的了,自己一个人搞定一个客户端。因为此处篇幅比较多,所以我决定分两篇博客进行讲解,欢迎看下篇 智能厨房重构-使用Bmob后端云实现朋友圈的功能。
1. 环境配置
1.1 服务器配置
首先你需要注册一个Bmob的账号,进入官网即可,注册一个自己的App,如何在后台建立属于自己的表,基本都是傻瓜式建表了,不需要使用SQL语言,来看一下我建的表:表搭建好了,服务器这边就完事了,就是如此简单。
1.2 客户端环境配置
搞完服务器,接下来就需要将bmob集成到我们的客户端中来了,其实我也是官网文档的搬运工,我就将最主要的步骤介绍一下:去官网上面下载这两个JAR包,然后再build gradle中添加两个依赖,官网文档中还有直接导入的方式,给个链接http://docs.bmob.cn/data/Android/a_faststart/doc/index.html#初始化BmobSDK,都是比较简单的。
1.3 基本的数据类型和函数
数据类型 目前为止,Bmob支持的数据类型:String、Integer、Float、Short、Byte、Double、Character、Boolean、Object、Array。
同时也支持BmobObject、BmobDate、BmobGeoPoint、BmobFile特有的数据类型。
添加数据
添加数据使用BmobObject对象的save方法,就可以将当前对象的内容保存到Bmob服务端。
例如,你现在要保存一条游戏分数的记录,代码如下:
GameScore gameScore = new GameScore(); //注意:不能调用gameScore.setObjectId("")方法 gameScore.setPlayerName("比目"); gameScore.setScore(89); gameScore.setIsPay(false); gameScore.save(new SaveListener<String>() { @Override public void done(String objectId, BmobException e) { if(e==null){ toast("创建数据成功:" + objectId); }else{ Log.i("bmob","失败:"+e.getMessage()+","+e.getErrorCode()); } } })1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
删除数据
从服务器删除对象。例如:将GameScore表中objectId为dd8e6aff28的数据删除。
GameScore gameScore = new GameScore(); gameScore.setObjectId("dd8e6aff28"); gameScore.delete(new UpdateListener() { @Override public void done(BmobException e) { if(e==null){ Log.i("bmob","成功"); }else{ Log.i("bmob","失败:"+e.getMessage()+","+e.getErrorCode()); } } });1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
查询数据
当我们知道某条数据的objectId时,就可以根据objectId直接获取单条数据对象。例如:查询objectId为a203eba875的人员信息。
BmobQuery<GameScore> query = new BmobQuery<GameScore>(); query.getObject("a203eba875", new QueryListener<GameScore>() { @Override public void done(GameScore object, BmobException e) { if(e==null){ //获得playerName的信息 object.getPlayerName(); //获得数据的objectId信息 object.getObjectId(); //获得createdAt数据创建时间(注意是:createdAt,不是createAt) object.getCreatedAt(); }else{ Log.i("bmob","失败:"+e.getMessage()+","+e.getErrorCode()); } } });1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
修改数据
更新一个对象也是非常简单。例如:将GameScore表中objectId为0c6db13c的游戏分数修改为77.
GameScore gameScore = new GameScore(); gameScore.setScore(77); gameScore.update("0c6db13c", new UpdateListener() { @Override public void done(BmobException e) { if(e==null){ Log.i("bmob","更新成功"); }else{ Log.i("bmob","更新失败:"+e.getMessage()+","+e.getErrorCode()); } } });1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
函数都比较简单好用,如果想要了解更多,请直接看官网文档。
2.实战
现在服务器和客户端的环境都配置好,现在我们可以开始实战了。我们要实现的注册和登录的功能,首先来看一下流程
2.1 建立实体对象
使用Bmob,必须遵守的一个规则就是,你的实体对象名必须和表名相同,表中的每一个列都对应一个属性,必须继承BmobObject这个类,这一点很不好,假如和ActiveAndroid连用的话,就冲突了,因为Java中不能多重继承,比如上面的用户表对应实体类就是:/** * 作者:GXL on 2016/8/3 0003 * 博客: http://blog.csdn.net/u014316462 * 作用:用户表 */ public class User extends BmobObject implements Serializable{ //姓名 String Name; //头像 BmobFile Photo; //密码 String Password; public String getNumber() { return Number; } public void setNumber(String number) { Number = number; } //手机号码 String Number; public String getName() { return Name; } public void setName(String name) { Name = name; } public BmobFile getPhoto() { return Photo; } public void setPhoto(BmobFile photo) { Photo = photo; } public String getPassword() { return Password; } public void setPassword(String password) { Password = password; } public User() { } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2.2 建立UserModel和服务器进行数据交互
/** * 作者:GXL on 2016/8/3 0003 * 博客: http://blog.csdn.net/u014316462 * 作用:用户信息Model */ public class UserModel implements UserModelImpl { private final String LOGINUSER = "loginuser"; /** * 用户登录验证 * * @param phone * @param passoword * @param listener */ @Override public void getUser(String phone, String passoword, final FoodModelImpl.BaseListener listener) { BmobQuery<User> query = new BmobQuery<User>(); query.addWhereEqualTo("Number", phone); query.addWhereEqualTo("Password", passoword); query.setLimit(1); query.findObjects(BaseApplication.getmContext(), new FindListener<User>() { @Override public void onSuccess(List<User> object) { if (object != null && object.size() != 0) { SPUtils.put(BaseApplication.getmContext(), LOGINUSER, object.get(0)); listener.getSuccess(object.get(0)); } else { listener.getFailure(); } } @Override public void onError(int code, String msg) { } }); } /** * 根据objectId获取User * * @param objectId * @param listener */ @Override public void getUser(String objectId, final FoodModelImpl.BaseListener listener) { BmobQuery<User> query = new BmobQuery<User>(); query.addWhereEqualTo("objectId", objectId); query.setLimit(1); query.findObjects(BaseApplication.getmContext(), new FindListener<User>() { @Override public void onSuccess(List<User> object) { if (object != null && object.size() != 0) { SPUtils.put(BaseApplication.getmContext(), LOGINUSER, object.get(0)); listener.getSuccess(object.get(0)); } else { listener.getFailure(); } } @Override public void onError(int code, String msg) { } }); } /** * 更换用户的头像 * * @param path * @param listener */ public void updateUserPhoto(String path, final String objectId, final FoodModelImpl.BaseListener listener) { final BmobFile bmobFile = new BmobFile(new File(path)); bmobFile.upload(BaseApplication.getmContext(), new UploadFileListener() { @Override public void onSuccess() { final User user = new User(); user.setPhoto(bmobFile); user.update(BaseApplication.getmContext(), objectId, new UpdateListener() { @Override public void onSuccess() { listener.getSuccess(user); } @Override public void onFailure(int i, String s) { listener.getFailure(); } }); } @Override public void onFailure(int i, String s) { listener.getFailure(); } }); } /** * 判断当前用户是否登录 * * @return */ public boolean isLogin() { List<UserLocal> list = new Select().from(UserLocal.class).execute(); if (list.size() != 0) { return true; } else { return false; } } /** * 将当前登录的对象保持到数据库中 * * @param userLocal */ public void putUserLocal(UserLocal userLocal) { new Delete().from(UserLocal.class).execute(); userLocal.save(); } /** * 获取当前登录的对象 * * @return */ public UserLocal getUserLocal() { return new Select().from(UserLocal.class).executeSingle(); } /** * 注册功能 * * @param user */ public void onRegister(User user, final FoodModelImpl.BaseListener listener) { user.save(BaseApplication.getmContext(), new SaveListener() { @Override public void onSuccess() { ToastUtils.showLong(BaseApplication.getmContext(), "注册成功"); listener.getSuccess(null); } @Override public void onFailure(int i, String s) { ToastUtils.showLong(BaseApplication.getmContext(), "注册失败"); listener.getFailure(); } }); } /** * 判断当前手机号码是否注册 * * @param phone * @param listener * @return */ public void isPhoneRegister(String phone, final FoodModelImpl.BaseListener listener) { BmobQuery<User> query = new BmobQuery<User>(); query.addWhereEqualTo("Number", phone); query.setLimit(1); query.findObjects(BaseApplication.getmContext(), new FindListener<User>() { @Override public void onSuccess(List<User> object) { if (object != null && object.size() != 0) { listener.getSuccess(object.get(0)); } else { listener.getFailure(); } } @Override public void onError(int code, String msg) { } }); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
所有和服务器的数据请求和提交都在上面了,都很简单,都是利用了上面的函数。
2.3 使用效果
详细的项目代码地址:https://github.com/gxl1240779189/ReIntelligentKitchen,如果决定效果还可以,请点个赞支持一下,多谢了。
相关文章推荐
- 智能厨房重构-使用Bmob后端云实现用户注册登录的功能。
- 智能厨房重构-使用Bmob后端云实现朋友圈的功能
- Bmob后端云的使用(1)——入门指导及实现登录注册功能
- android studio使用Bmob来实现登录注册的功能
- 使用PHP实现用户登录和注册的功能
- 智能厨房重构-使用vitamio实现视频播放功能
- 使用PHP实现用户登录和注册的功能(未封装)
- java在线聊天项目1.1版 ——开启多个客户端,分别实现注册和登录功能,使用客户端与服务端信息request机制,重构线程,将单独的登录和注册线程合并
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
- 使用PHP实现用户登录和注册的功能
- 使用PHP实现用户登录和注册的功能
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能
- Android实践——使用Bmob实现登录、注册等功能
- android studio使用Bmob来实现登录注册的功能
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- ASP.NET jQuery 食谱12 (通过使用jQuery validation插件简单实现用户注册页面验证功能)
- 使用Forms Authentication实现用户注册、登录 (三)用户实体替换
- ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
- 使用Forms Authentication实现用户注册、登录 (二)用户注册与登录