声明:作者原创,转载注明出处。

一、Baas简介

Baas,Backend as a Service的简称,即“移动后端即服务”。

“移动后端即服务”是移动平台在“云”这一概念上的一个典型实践。Baas帮助我们把服务器的东西打包,做移动端的人不用再考虑如何写服务器端、如何设计数据库、搭建服务器等,它把这一切放在云端,用户只需要调用API接口,就可以实现各种功能。

Baas源于国外,在国内的发展也很迅速,除了Bmob外,还有原子云、AVOS Cloud、百度frontia、华为PowerApp等,这些平台为开发者提供一系列的云端服务,包括数据存储、消息推送、文件服务、API分析、应用统计、移动官网等,但不同的Bass提供商提供的服务的侧重点不同,今天我们来了解一下如何利用Bmob在云端搭建移动平台的服务器端。

二、Bmob简介

Bmob是国内最早做Bass的平台,它提供的服务主要包括数据服务、短信服务、即时通讯、推送功能、移动支付、云端逻辑和容器服务等。

由于时间限制,我在这里仅对Bmob平台的数据服务作一个简单的介绍和代码实践,Bmob官网为开发者提供了非常完善的文档,想了解其他功能的可以前往学习。

(一)数据服务基本操作

1.创建JavaBean

首先创建一个JavaBean,用于存储用户数据,该类要继承BmobObject,这样Bmob SDK才能够识别:

public class User extends BmobObject{

//用户名

private String userName;

//密码

private String userPwd;

public String getUserName() {

return this.userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getUserPwd() {

return this.userPwd;

}

public void setUserPwd(String userPwd) {

this.userPwd = userPwd;

}

}

2.添加一行数据

User user = new User();

user.setUserName("sqchen");

user.setPassword("123");

user.save(new SaveListener() {

@Override

public void done(String objectId,BmobException e) {

if(e==null){

Toast.makeText(context,

"数据添加成功!",

Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(context,

"数据添加失败!",

Toast.LENGTH_SHORT).show();

}

}

});

当服务器端不存在User表时,系统会根据你的User.class自动帮你创建表,表名和类名一致,除了User.class自身拥有的字段外,还会增加objectId(数据编号)、createdAt、updateAt、ACL字段。如果服务器端已经存在User表和相应的字段,那么我们添加的数据和数据类型也要和服务器端的表一致,以下增删改查操作同上。

当返回的BmobException对象为null时,说明操作成功,否则失败。

3.获取一行数据

BmobQuery userQuery = new BmobQuery();

//增加查询条件

userQuery.addWhereEqualTo("userName","sqchen");

userQuery.findObjects(new FindListener() {

@Override

public void done(List list, BmobException e) {

if(e == null) {

Toast.makeText(context,

"数据获取成功!",

Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(context,

"数据获取成功!",

Toast.LENGTH_SHORT).show();

}

}

});

4.修改一行数据

User user = new User();

user.setUserPassword("456");

user.update("objectId",new UpdateListener() {

@Override

public void done(BmobException e) {

if(e == null) {

Toast.makeText(context,

"数据修改成功!",

Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(context,

"数据修改失败!",

Toast.LENGTH_SHORT).show();

}

}

});

帅气的人会发现,上面获取数据时可以指定查询条件进行数据的增加操作,即"addWhereEqualTo()"方法,而对于数据的修改和删除操作,目前Bmob SDK只支持通过objectId(数据编号,)进行更新和删除(当然,获取操作也支持根据objectId进行数据的获取)。

自V3.4.4版本开始,SDK提供了setValue(key,value)方法,用于数据的更新。如:

User user = new User();

user.setValue("userPwd","456");

5.删除一行数据

User user = new User();

user.setObjectId("objectId");

user.delete(new UpdateListener() {

@Override

public void done(BmobException e) {

if(e == null) {

Toast.makeText(context,

"数据删除成功!",

Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(context,

"数据删除失败!",

Toast.LENGTH_SHORT).show();

}

}

});

以上,就是Bmob数据服务的基本操作。下面就来练习一下吧。

(二)数据服务的实践

1.注册账号

这里写图片描述

2.创建应用

这里写图片描述

3.获取密钥

这里写图片描述

4.导入SDK

在工程的build.gradle中添加,如图:

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:1.2.3'

}

这里写图片描述

再在项目的build.gradle中添加,如图:

repositories {

jcenter()

//Bmob的maven仓库地址--必填

maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }

}

这里写图片描述

5.配置AndroidManifest.xml

添加下列权限:

6.初始化SDK

在启动Activity里的onCreate()生命周期方法里添加下面这一句,第二个参数的值就是在第三步中获取到的Application ID的值。

Bmob.initialize(this, "你的ApplicationID");

7.创建JavaBean

MyUser.class

public class MyUser extends BmobObject{

//用户名

private String userName;

//密码

private String userPwd;

public String getUserName() {

return this.userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getUserPwd() {

return this.userPwd;

}

public void setUserPwd(String userPwd) {

this.userPwd = userPwd;

}

}

由于当User.class继承自BmobUser.class(BmobSDK中的一个特殊的类)时,拥有特定的含义(在其数据服务的官方文档的“用户管理”中有介绍),而我们只是想通过它来体验一下增删改查操作,所以这里为了区分,将实体类名取做“MyUser.class”。

8.登录界面

这里写图片描述

LoginActivity.class

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{

private EditText editName;

private EditText editPwd;

private Button btnLogin;

private Button btnToRegister;

private String strName;

private String strPwd;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//初始化BmobSDK,

Bmob.initialize(this, "你的ApplicationID");

setContentView(R.layout.activity_login);

initView();

}

/**

* 控件初始化

*/

private void initView() {

editName = (EditText) findViewById(R.id.edit_login_name);

editPwd = (EditText) findViewById(R.id.edit_login_pwd);

btnLogin = (Button) findViewById(R.id.btn_login);

btnToRegister = (Button) findViewById(R.id.btn_to_register);

btnLogin.setOnClickListener(this);

btnToRegister.setOnClickListener(this);

}

/**

* 重写按钮的点击事件

* @param view

*/

@Override

public void onClick(View view) {

switch (view.getId()) {

case R.id.btn_login:

userLogin();

break;

case R.id.btn_to_register:

toRegister();

break;

default:

break;

}

}

/**

* 用户登录

*/

private void userLogin() {

BmobQuery userQuery = new BmobQuery();

userQuery.addWhereEqualTo("userName",strName);

userQuery.addWhereEqualTo("userPwd",strPwd);

userQuery.findObjects(new FindListener() {

@Override

public void done(List list, BmobException e) {

if(e == null) {

if(list.size() == 1) {

Toast.makeText(getApplicationContext(),

"登录成功!",

Toast.LENGTH_SHORT).show();

Intent intentMain = new Intent(LoginActivity.this,MainActivity.class);

startActivity(intentMain);

} else {

Toast.makeText(getApplicationContext(),

"用户名或密码错误,请重新输入!",

Toast.LENGTH_SHORT).show();

cleanInput();

}

} else {

Toast.makeText(getApplicationContext(),

"登录失败,错误码:" + e.getErrorCode(),

Toast.LENGTH_SHORT).show();

cleanInput();

}

}

});

}

/**

* 去登录

*/

private void toRegister() {

Intent intentReg = new Intent(LoginActivity.this,RegisterActivity.class);

startActivity(intentReg);

}

/**

* 获取用户输入数据

*/

private void getInput() {

strName = editName.getText().toString();

strPwd = editPwd.getText().toString();

}

/**

* 清除用户输入数据

*/

private void cleanInput() {

editName.setText("");

editPwd.setText("");

}

}

9.注册界面

这里写图片描述

RegisterActivity.class

public class RegisterActivity extends AppCompatActivity {

private EditText editName;

private EditText editPwd;

private Button btnRegister;

private String strName;

private String strPwd;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_register);

initView();

}

/**

* 控件初始化

*/

private void initView() {

editName = (EditText) findViewById(R.id.edit_register_name);

editPwd = (EditText) findViewById(R.id.edit_register_pwd);

btnRegister = (Button) findViewById(R.id.btn_register);

btnRegister.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

userRegister();

}

});

}

/**

* 用户注册,即添加一行数据

*/

private void userRegister() {

getInput();

Log.d("sqchen",strName + strPwd);

MyUser mUser = new MyUser();

mUser.setUserName(strName);

mUser.setUserPwd(strPwd);

mUser.save(new SaveListener() {

@Override

public void done(String s, BmobException e) {

if(e == null) {

Toast.makeText(getApplicationContext(),

"注册成功!请登录",

Toast.LENGTH_SHORT).show();

finish();

} else {

Toast.makeText(getApplicationContext(),

"注册失败!" + "错误码:" + e.getMessage(),

Toast.LENGTH_SHORT).show();

}

}

});

}

/**

* 获取用户输入数据

*/

private void getInput() {

strName = editName.getText().toString();

strPwd = editPwd.getText().toString();

}

}

10.登录之后的界面

登录后的主界面就是显示一段文本,没什么特别的。

这里写图片描述

MainActivity.class

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

总结:

作为平时的练手项目,使用第三方平台的后端云对开发者来说无疑便利了很多,大大降低了学习成本和代码复杂度,但从另一方面来看,第三方平台的SDK对应用层面的开发进行了代码的封装,而很多业务逻辑其实还是需要我们自己去实现比较好。

个人博客传送门:帅气陈吃苹果

android bmob获取密码,Bmob后端云初体验相关推荐

  1. Bmob后端云初体验

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.Baas简介 Baas,Backend as a Service的简称,即"移动后端即服务". "移动后端即服务& ...

  2. Android客户端——寒假实习面经-实习初体验

    Android客户端--寒假实习面经-实习初体验 一.絮絮叨叨的一些话 好久没有写博客了,前段时间一直在忙实习的事,耽搁了一阵子,现在忙的差不多了,所以打算在实习期间抽些,继续写写博客,为明年的春招和 ...

  3. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  4. 华为云初体验——感谢牛客网与华为云联合送福利

    初闻 今天下午六点多,突然发现牛客网公众号推新了,顺手点了下,没想到牛客网搞活动,购华为云主机还返现!感动!正想买个服务器来搭个视频网站,真是福利,嘿嘿 行动 看到推文当然是赶紧下手啦!,详细步骤如下 ...

  5. Android开发学习之路--Notification之初体验

    一般当我们收到短信啊,微信啊,或者有些app的提醒.我们都会在通知栏收到一天简单的消息,然后点击消息进入到app里面,事实上android中有专门的Notification的类能够完毕这个工作,这里就 ...

  6. Android开发学习之路--Camera之初体验

    顾名思义Camera就是拍照和录像的功能,像微信里面,我们想拍照传一下照片,就能够通过camera来拍照,然后存储照片.发送给好友.那么微信的app里面是不会直接通过camera api来实现的,由于 ...

  7. Android和风SDK,AndroidSDK——和风天气使用初体验

    最近做的项目涉及到获取当地的天气状态等信息,偶然发现和风天气这个很好用,所以打算分享一下. 首先进行注册 并在控制台创建应用获取username,key待后续使用 下载 和风天气SDK的jar包,并集 ...

  8. android 人生日历,人生日历Android版 安卓版人生日历功能初体验

    千呼万唤始出来,人生日历终于发布手机Android版本了.下面跟随小编一起体验一下它的各个功能吧. 在手机屏幕上打开人生日历,进入程序之后,就会出现如下界面.进入界面简单美观,淡蓝色底色调,延续了人生 ...

  9. Android进阶:十一、视频播放器初体验,android开发入门pdf

    编译成功之后我们就可以在代码里面用它了,这个也很简单一般不会出什么问题.ijplayer里面提供了一个IMediaPlayer,我们初始化它即可: private void initMediaPlay ...

最新文章

  1. 哥们,你真以为你会做这道JVM面试题?
  2. 关于全连接层梯度的链式法则
  3. 2011下半年案例分析题的解答思路_信息系统项目管理师考试
  4. timer 公司内部用法
  5. 面试题整理11 数字在排序数组中出现的次数
  6. ServletConfig接口
  7. C语言进制转换时自动扩展位?(原码、反码、补码)(打印%o、%x时会自动扩展到32位【负数先得到其十进制真实数值,再根据其真实数值得到八进制、十进制补码】)
  8. Azure SQL的DTU和eDTU到底是个什么鬼
  9. 口碑网发布2010吃住玩消费风向指数
  10. B-JUI文档、下载
  11. resource fork, Finder information, or similar detr
  12. 小说网jsp源码_基于jsp+mysql的JSP小说网
  13. LeetCode 221 最大正方形
  14. 大学生在校期间可以考哪些证书?
  15. git remote传到远程
  16. 查看centos硬件配置
  17. SI9000差分阻抗计算示例
  18. 公司不是家——联想员工亲历2004年联想大裁员【转载】
  19. 163电子邮箱怎么注册申请?手机号注册电子邮箱的小技巧
  20. SQL中模式的定义和删除

热门文章

  1. 宝宝起名神器小程序源码_支持多种流量主模式
  2. 鼠标悬停字体抖动_快速提示:解决悬停状态下的字体粗细问题
  3. 大数据资源争夺战此起彼伏,对用户而言是福是祸
  4. 网页通过Flash播放视频
  5. pthread_cond_destroy死锁卡住问题处理记录
  6. PostgreSQL空间回收利器——pg_repack
  7. Visual C++游戏编程基础之透明半透明效果
  8. 应用计算机测定电阻伏安特性,实验: 应用计算机测线性电阻伏安特性
  9. python3 爬虫神器pyquery的使用实例之爬网站图片
  10. 上海居住证转户口证攻略