#Android 示例与教程
失物招领案例教程
需求描述
说明一点的是,因为是演示案例,所以信息的添加和删除并没有进行用户身份验证。
本案例将使用到Bmob的如下功能:
1、 添加数据
添加失物/招领信息到服务器中。
2、 查找数据
在列表中显示所有用户发布的失物/招领信息。
3、 删除数据
删除已发布的失物/招领信息。
本案例最终实现的部分界面效果如下:
招领列表页
添加失物信息
数据结构设计
本案例的数据结构非常简单,只需要设计两个表,一个是失物表(Lost表),一个是招领表(Found表),对应的数据结构如下(省略对常用默认字段objectId、createAt、updateAt的描述,对于还不知道怎么创建应用和添加数据表的开发朋友请先移步快速入门指南查看相关教程):
失物表(Lost)字段名
类型
描述
describe
String
失物的描述信息
phone
String
联系的手机 码
title
String
失物的标题信息
招领表(Found)字段名
类型
描述
describe
String
招领的描述信息
phone
String
联系的手机 码
title
String
招领的标题信息
初始化SDK
Bmob为每个应用都提供了一个唯一标识(对应为开发者后台应用中的“应用密钥->Application ID”),使用Bmob开发的应用都要首先使用这个Application ID”进行初始化。对应代码如下(详细代码实现参看BaseActivity类):protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化 Bmob SDK,第一个参数为上下文,第二个参数为Application ID
Bmob.initialize(this, Constants.Bmob_APPID);
//其他代码
}
创建数据模型类
为操作Bmob的云端数据库,SDK首先需要创建数据表对应的模型类(模型类的名称必须和云端数据表的名称一致),该类需要继承自BmobObject,实现刚刚创建的数据表字段的set和get方法(系统默认字段objectId、createAt、updateAt不需要声明)。因为本案例需要操作Lost表和Found表,因此需要创建Lost类和Found类。下面是Lost模型类的实现代码(Found模型类的实现代码略):public class Lost extends BmobObject{
private String title;//标题
private String describe;//描述
private String phone;//联系手机
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
添加失物/招领信息
用户填写了失物信息之后,只需要构造一个Lost实例,然后简单调用模型类的insertObject方法(第一个参数是上下文,第二个参数是插入信息的回调类)就可以将信息添加到云数据库中,实现代码如下(详细代码实现参看AddActivity类):Lost lost = new Lost();
lost.setDescribe(describe);
lost.setPhone(photo);
lost.setTitle(title);
lost.save(this, new SaveListener() {
@Override
public void onSuccess() {
ShowToast(“失物信息添加成功!”);
//其他代码
}
@Override
public void onFailure(int code, String arg0) {
ShowToast(“添加失败:”+arg0);
}
});
获取失物/招领列表
Bmob提供了复杂和简单的查询方法,可以对查询结果进行排序,可以对结果进行缓存。本案例只使用到Bmob提供的最简单的查询和排序功能,直接调用BmobQuery类的findObjects方法和order方法来获取失物列表,实现代码如下(详细代码实现参看MainActivity类):BmobQuery query = new BmobQuery();
//按照时间降序
query.order(“-createdAt”);
//执行查询,第一个参数为上下文,第二个参数为查找的回调
query.findObjects(this, new FindListener() {
@Override
public void onSuccess(List losts) {
…..
//将结果显示在列表中
LostAdapter.addAll(losts);
…..
}
@Override
public void onError(int code, String arg0) {
showErrorView(0);
}
});
删除失物/招领信息
Bmob云数据库对每条新增的数据都有一个唯一标识(objectId),这类似于传统SQL数据库中的唯一主键的性质。从云数据库中删除某条记录需要设置这个要删除的ObjectId的信息,再调用模型类的deleteObject方法就可以了,实现代码如下(详细代码实现参看MainActivity类的deleteLost方法):Lost lost = new Lost();
//设置ObjectId信息
lost.setObjectId(LostAdapter.getItem(position).getObjectId());
//执行删除方法,第一个参数为上下文,第二个参数为删除的回调
lost.delete(this, new DeleteListener() {
@Override
public void onSuccess() {
//删除成功
LostAdapter.remove(position);
}
@Override
public void onFailure(int code, String arg0) {
//删除失败
}
});
后记
本案例只是演示如何用Bmob进行快速的数据增删改查,在真实的应用环境下,你还可能还需要使用到用户系统、文件服务、更复杂的数据结构和服务,这些都可以使用Bmob就可以实现。如果想要获取更多的信息,请各位查看Bmob的开发文档或者联系技术客服。欢迎砸砖,欢迎提出更多的意见和建议帮助Bmob更好的发展。谢谢~
案例下载
上传文件案例教程
上传文件需求描述
相对于移动 络和数据服务而言,文件服务往往需要更长的i/o时间,因此也就涉及到更多的异步操作的问题。不少朋友在用到Bmob文件服务的时候出错,原因就是没有充分理解同步和异步的本质。为方便大家理解Bmob的文件服务,这里提供一个上传文件的案例,从如何往一个只有一列文件字段的表中插入一条或者多条,到如何往一个有两列甚至多列文件字段的表中插入一条或者多条数据进行详细阐述。
案例的界面效果如下:
发送反馈截图

查看反馈意见截图
反馈案例数据结构设计
在Bmob开发者后台创建一个应用(还不知道怎么创建应用和添加数据表的开发朋友请先移步快速入门指南查看相关教程),添加两个表,分别是Feedback(用户反馈信息表,存储用户提交的反馈信息)和Installation(设备安装表,存储需要接收推送信息的设备信息)。以下是对这两个表的数据结构的详细描述(省略对常用默认字段objectId、createAt、updateAt的描述)Feedback表
字段名类型描述
ContactString用户的联系方式
deviceTypeString系统字段,是一个必须的字段, 必须被设置为 “ios” 或者 “android”, 而且自这个对象生成以后就不能变化
Installation表
字段名类型描述
installationIdString系统字段,是一个Bmob生成的字符串标志, 而且如果 deviceType 是 android 的话是一个必填字段, 如果是 ios 的话则可选. 它只要对象被生成了就不能发生改变, 而且对一个 app 来说是不可重复的
deviceTokenString系统字段,是一个 Apple 生成的字符串标志, 在 deviceType 为 ios 上的设备是必须的, 而且自对象生成开始就不能改动, 对于一个 app 来说也是不可重复的
badgeNumber系统字段,表示iOS 设备最新已知的应用badge
timeZoneString系统字段,表示安装的这个设备的系统时区
channelsArray系统字段,表示这个安装对象的订阅频道列表
appIdentifiterStringiOS应用的Bundle identifier
isDeveloperBoolean是否是开发者(是的话则用于接收推送信息)
安装和初始化
还不知道怎么安装使用Bmob数据存储Sdk的开发朋友请先移步快速入门指南查看相关教程。
推送服务的SDK初始化和Bmob数据存储SDK一样,只需要在Activity的onCreate方法中简单调用BmobPush.startWork方法就可以了,代码如下(详细代码见MainActivity类)://这里替换为你的APP Key
public static String APPID = “”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bmob.initialize(this, APPID);
BmobPush.startWork(this, APPID);
}
发送反馈功能的开发
这里要实现的是当用户点击“发送”反馈按钮之后,先把用户的反馈信息上传到Bmob云数据库中,然后发送一条推送信息到Installation表中isDeveloper为true的设备中去。
为实现将数据保存到云数据库的功能,你首先需要先创建一个Feedback类(需要与刚刚创建的数据表Feedback名称对应一致),该类继承自BmobObject类,实现contact和content的set和get方法。实现代码如下(详细代码见Feedback类):public class Feedback extends BmobObject {
//反馈内容
private String content;
//联系方式
private String contacts;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getContacts() {
return contacts;
}
public void setContacts(String contacts) {
this.contacts = contacts;
}
}
有了Feedback类,你就可以方便的通过BmobObject的insertObject方法操作云数据库,将数据保存上去了。实现代码如下(详细代码见ActSendFeedback类):/**
* 保存反馈信息到Bmob云数据库中
* @param msg 反馈信息
*/
private void saveFeedbackMsg(String msg){
Feedback feedback = new Feedback();
feedback.setContent(msg);
feedback.save(this, new SaveListener() {
@Override
public void onSuccess() {
Log.i(“bmob”, “反馈信息已保存到服务器”);
//发送推送信息
saveFeedbackMsg(message);
}
@Override
public void onFailure(int code, String arg0) {
// TODO Auto-generated method stub
Log.e(“bmob”, “保存反馈信息失败:”+arg0);
}
});
}
/**
* 推送反馈信息给isDeveloper的设备
* @param message 反馈信息
*/
private void sendMessage(String message){
BmobPushManager bmobPush = new BmobPushManager(this);
BmobQuery query = BmobInstallation.getQuery();
query.addWhereEqualTo(“isDeveloper”, true);
bmobPush.setQuery(query);
bmobPush.pushMessage(message);
}
查看反馈功能的开发
为了接收用户端推送过来的反馈信息,查看反馈端需要自定义一个继承自BmobPushMessageReceiver的类,用于处理接收到的推送信息。实现代码如下:public class MyMessageReceiver extends BmobPushMessageReceiver {
@Override
public void onMessage(Context context, String message) {
Log.d(“bmob”, “收到反馈消息 = “+message);
//通知栏显示收到的反馈信息
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification n = new Notification();
n.icon = R.drawable.ic_launcher;
n.tickerText = “收到反馈消息”;
n.when = System.currentTimeMillis();
Intent intent = new Intent(context, ActFeedbackList.class);
PendingIntent pi = PendingIntent.getActivity(context, 0, intent, 0);
n.setLatestEventInfo(context, “消息”, message, pi);
n.defaults |= Notification.DEFAULT_SOUND;
n.flags = Notification.FLAG_AUTO_CANCEL;
nm.notify(1, n);
}
}
查看反馈列表的功能实现也很简单,只需要调用BmobObject的findObjects方法就可以了,实现代码如下(详细代码见ActFeedbackList类):BmobQuery query = new BmobQuery();
//按createAt降序排列
query.order(“-createdAt”);
query.findObjects(this, new FindListener() {
@Override
public void onSuccess(List arg0) {
//显示反馈列表信息
adapter = new FeedbackAdapter(ActFeedbackList.this, arg0);
listView.setAdapter(adapter);
}
@Override
public void onError(int code, String arg0) {
emptyView.setText(arg0);
}
});
反馈案例后记
当然了,实际使用过程的反馈功能可能并没有那么简单,或许你需要实现能够直接跟用户对话的反馈功能,或许你想要实现智能化的机器回答,这些都可以使用Bmob移动云服务平台进行快速设计和开发的。欢迎各位砸砖,欢迎提出更多的意见和建议帮助Bmob更好的发展。谢谢~
反馈案例案例下载
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!