一、移动后端服务介绍
移动后端即服务--Backend as a Service也叫Baas。简而言之,Baas就是帮我们把服务器端的东西全部打包了,做移动端的人不用再考虑如何写服务器端、如何设计数据库、搭建服务器等,它把这一切都放在了云端。
Baas的概念最早来源于国外的一些网站,比较老牌的有StackMob和Parse。后来Amazon、Kinvey等都先后加入了Bass的舞台。国内的Baas平台,除了最早期的Bmob以外,还有原子云、AVOS Cloud、百度frontia、华为PowerApp等。
通常Baas平台会为开发者提供一系列的云端服务,一般包括数据储存、消息推送、文件服务、API分析、应用统计、移动官网等。不同的Baas提供商提供的服务各有不同,也各有侧重点。本文将以Baas为例,讲解如何利用Baas在云端搭建移动平台的服务器端。
二、使用Bmob创建移动后端服务
1、下载SDK,Bmob官网地址: http://www.bmob.cn
2、创建应用,将下载的SDK解压,把解压后的文件夹中所有的jar包都拷入项目的libs文件夹下;
3、在项目的AndroidMainfest.xml文件中添加相应的权限:
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
4、初始化BmobSDK
一般在进入应用的第一个界面的逻辑中添加以下代码,即可实现SDK的初始化。
Bmob.initialize(this, "App ID");
第二个参数为应用的ID。
关于应用的ID,在官网注册之后,进入后台并创建应用,点击创建好的应用,在依次点击设置->应用密钥即可查看。
上述四步完成之后,整个Bmob项目的准备工作也就完成了。下面会以两个小例子测试创建好的应用。
三、数据服务
1、添加一行数据
(1)创建一个JavaBean,继承BmobObject。这个类中的属性与数据库中表的字段是一一对应的,表名与类名相同,即可以通过创建不同的JavaBean来实现表及表结构。
public class Person extends BmobObject {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
(2)添加一行数据
<span style="font-size:18px;">p2 = new Person();
p2.setName("lucky");
p2.setAddress("北京海淀");
p2.save(this, new SaveListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "添加数据成功,返回objectId为:"+
p2.getObjectId(),Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int code, String msg) {
Toast.makeText(MainActivity.this,"创建数据失败:" + msg,
Toast.LENGTH_SHORT).show();
}
});</span>
如果Toast成功的消息,则可在后台对应的应用下看到新增一条数据(如果表没有创建,则会同时创建一张表,机应用中JavaBean对应的数据库表)
2、查找一条数据
<div style="text-align: left;"><span style="font-family: Arial;"><span style="font-size:18px;">BmobQuery<Person> bmobQuery = new BmobQuery<Person>();</span></span></div><div style="text-align: left;"><span style="font-family: Arial;"><span style="font-size:18px;">//第二个参数是Person表中,某条数据的id</span></span></div><div style="text-align: left;"><span style="font-family: Arial;"><span style="font-size:18px;">bmobQuery.getObject(this, "a9d6a5b713", new GetListener<Person>() {</span></span></div><div style="text-align: left;"><span style="font-family: Arial;"><span style="font-size:18px;"> @Override</span></span></div><div style="text-align: left;"><span style="font-family: Arial;"><span style="font-size:18px;"> public void onSuccess(Person object) {</span></span></div><div style="text-align: left;"><span style="font-family: Arial;"><span style="font-size:18px;"> Toast.makeText(MainActivity.this,"查询成功",</span></span></div><span style="font-size:18px;"> Toast.LENGTH_SHORT).show();
}
</span><div style="text-align: left;"><span style="font-family: Arial; text-align: left;"><span style="font-size:18px;"> </span></span></div><span style="font-size:18px;"> @Override
public void onFailure(int code, String msg) {
</span><div style="text-align: left;"><span style="font-family: Arial;"><span style="font-size:18px;"><span style="white-space:pre"> </span>Toast.makeText(MainActivity.this,"查询失败:" + msg,</span></span><pre name="code" class="java" style="color: rgb(54, 46, 43); line-height: 26px; text-indent: 28px;"><span style="font-size:18px;"><span style="white-space:pre"> </span>Toast.LENGTH_SHORT).show();</span>
});
3、修改一条数据
<div style="text-align: justify;"><span style="font-family: Arial;"><span style="font-size:18px;">p2 = new Person();</span></span></div><div style="text-align: justify;"><span style="font-family: Arial;"><span style="font-size:18px;">p2.setAddress("北京朝阳");</span></span></div><div style="text-align: justify;"><span style="font-family: Arial;"><span style="font-size:18px;">//第二个参数是Person表中,某条数据的id</span></span></div><div style="text-align: justify;"><span style="font-family: Arial;"><span style="font-size:18px;">p2.update(this, "a9d6a5b713", new UpdateListener() {</span></span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="font-size:18px;"><span style="white-space:pre"> </span>@Override</span></span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="font-size:18px;"><span style="white-space:pre"> </span>public void onSuccess() {</span></span></div><div style="text-align: justify;"><span style="font-family: Arial;"><span style="font-size:18px;"> Toast.makeText(MainActivity.this,"更新成功:" + p2.getUpdatedAt(),</span></span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="font-size:18px;"><span style="white-space:pre"> </span>Toast.LENGTH_SHORT).show();</span></span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="font-size:18px;"><span style="white-space:pre"> </span>}</span></span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="font-size:18px;"><span style="white-space:pre"> </span>@Override</span></span></div><div style="text-align: justify;"><span style="font-size:18px;"><span style="font-family: Arial;"> </span><span style="font-family: Arial; text-align: center;">public void onFailure(int code, String msg) {</span></span></div><div style="text-align: justify;"><span style="font-size:18px;"><span style="font-family: Arial; text-align: center;"><span style="white-space:pre"> </span>Toast.makeText(MainActivity.this,"更新失败:" + msg, </span><span style="font-family: Arial; text-align: center;"><span style="color: rgb(54, 46, 43); font-family: Arial; line-height: 26px; text-align: center; text-indent: 28px; white-space: pre; background-color: rgb(240, 240, 240);">Toast.LENGTH_SHORT).show();</span> </span></span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="font-size:18px;"><span style="white-space:pre"> </span>}</span></span></div><div style="text-align: justify;"><span style="font-family: Arial;"><span style="font-size:18px;">});</span></span></div>
4、删除一条数据
<div style="text-align: justify;"><span style="font-family: Arial;">p2 = new Person();</span></div><div style="text-align: justify;"><span style="font-family: Arial;">p2.setObjectId("a9d6a5b713");</span></div><div style="text-align: justify;"><span style="font-family: Arial;">p2.delete(this, new DeleteListener() {</span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="white-space:pre"> </span>@Override</span></div><div style="text-align: justify;"><span style="text-align: center; font-family: Arial;"><span style="white-space:pre"> </span>public void onSuccess() {</span></div><div style="text-align: justify;"><span style="font-family: Arial;"><span style="white-space:pre"> </span> Toast.makeText(MainActivity.this,"删除成功",</span></div><div style="text-align: justify;"><span style="text-align: center; font-family: Arial;"><span style="white-space:pre"> </span>Toast.LENGTH_SHORT).show();</span><span style="text-align: center; font-family: Arial;"> </span></div><div style="text-align: justify;"><span style="font-family: Arial;"><span style="white-space:pre"> </span>}</span><span style="font-family: Arial; text-align: center;"> </span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="white-space:pre"> </span>@Override</span><span style="font-family: Arial;"> </span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="white-space:pre"> </span>public void onFailure(int code, String msg) {</span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="white-space:pre"> </span>Toast.makeText(MainActivity.this,"删除失败:" + msg,</span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="white-space:pre"> </span>Toast.LENGTH_SHORT).show();</span></div><div style="text-align: justify;"><span style="font-family: Arial; text-align: center;"><span style="white-space:pre"> </span>}</span></div><div style="text-align: justify;"><span style="font-family: Arial;">});</span></div>