Android集成Bmob后端云
Bmob 后端云 全方位一体化的后端服务平台无需再造应用后端服务 轻松拥有开发中需要的各种后端能力功能比较多,常用的比如数据库、推送统计、IM即时通讯、短信等本文主要介绍集成和云数据库的基本使用,文档写的很详细,而且还有demo和视频教程。Bmob:http://www.bmob.cn/文档:http://doc.bmob.cn/data/android/index.ht
Bmob 后端云 全方位一体化的后端服务平台
无需再造应用后端服务 轻松拥有开发中需要的各种后端能力
功能比较多,常用的比如数据库、推送统计、IM即时通讯、短信等
本文主要介绍集成和云数据库的基本使用,文档写的很详细,而且还有demo和视频教程。
Bmob:http://www.bmob.cn/
文档:http://doc.bmob.cn/data/android/index.html
创建应用
注册就不用说了吧。。
注册之后选择创建应用
创建之后,点击你的应用
这个时候可以看到已经默认建了一个user表,但是没有数据,上面的菜单栏也可以直接进行增删改查操作
左边导航栏的最下面有个设置,点击可以查看application id,初始化会用到
集成
1.在 Project 的 build.gradle 文件中添加 Bmob的maven仓库地址,注释部分
allprojects {
repositories {
google()
jcenter()
//Bmob的maven仓库地址--必填
maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
}
}
2.在app的build.gradle文件中添加compile依赖文件,注释部分
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.yechaoa.mybmob"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//兼容6.0
useLibrary 'org.apache.http.legacy'
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
//以下SDK开发者请根据需要自行选择
//bmob-sdk:Bmob的android sdk包,包含了Bmob的数据存储、文件等服务,以下是最新的bmob-sdk:
//3.5.5:请务必查看下面注释[1]
compile 'cn.bmob.android:bmob-sdk:3.5.5'
//bmob-push:Bmob的推送包
compile 'cn.bmob.android:bmob-push:0.8'
}
3.配置AndroidManifest.xml
<!--允许联网 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--获取wifi网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--保持CPU 运转,屏幕和键盘灯有可能是关闭的,用于文件上传和下载 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--获取sd卡写的权限,用于文件上传和下载-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许读取手机状态 用于创建BmobInstallation-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
4.初始化BmobSDK
在你应用程序启动的Activity的onCreate()方法中初始化Bmob功能。代码如下所示:
这里注意换成你的application id
package com.bmob.example;
import cn.bmob.v3.Bmob;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//提供以下两种方式进行初始化操作:
//第一:默认初始化
Bmob.initialize(this, "Your Application ID");
// 注:自v3.5.2开始,数据sdk内部缝合了统计sdk,开发者无需额外集成,传渠道参数即可,不传默认没开启数据统计功能
//Bmob.initialize(this, "Your Application ID","bmob");
//第二:自v3.4.7版本开始,设置BmobConfig,允许设置请求超时时间、文件分片上传时每片的大小、文件的过期时间(单位为秒),
//BmobConfig config =new BmobConfig.Builder(this)
设置appkey
//.setApplicationId("Your Application ID")
请求超时时间(单位为秒):默认15s
//.setConnectTimeout(30)
文件分片上传时每片的大小(单位字节),默认512*1024
//.setUploadBlockSize(1024*1024)
文件的过期时间(单位为秒):默认1800s
//.setFileExpiration(2500)
//.build();
//Bmob.initialize(config);
}
}
ok,到这里集成工作就完成了。基本上不会遇到问题。
基本使用
1.添加一条数据
新建Person类,必须继承BmobObject对象,Person也是对应的数据库的表名,可以改,看下面注释。
package com.yechaoa.mybmob;
import cn.bmob.v3.BmobObject;
/**
* Created by yechao on 2018/2/9.
* Describe :
*/
public class Person extends BmobObject {
private String name;
private String address;
//这时候表名就是T_a_b,而不是Person
//当然了,除了在构造函数中直接调用setTableName方法之外,你还可以在GameScore的实例中动态调用setTableName方法。
//需要注意的是查询的结果是JSONArray,需要自行解析JSONArray中的数据。
// public Person() {
// this.setTableName("T_a_b");
// }
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;
}
}
调用save方法添加数据,添加成功之后会返回objectId,唯一标识,后续删改查都会用到
private void initSaveData() {
Person p2 = new Person();
p2.setName("yechaoa");
p2.setAddress("上海浦东");
p2.save(new SaveListener<String>() {
@Override
public void done(String objectId, BmobException e) {
if (e == null) {
toast("添加数据成功,返回objectId为:" + objectId);
mTextView.setText("添加数据成功,返回objectId为:" + objectId);
} else {
toast("创建数据失败:" + e.getMessage());
mTextView.setText("创建数据失败:" + e.getMessage());
}
}
});
}
刷新控制台可以看到,多了一个Person表,且有一条数据,就是刚才插入的。
2.查询多条数据
private void queryList() {
BmobQuery<Person> query = new BmobQuery<Person>();
//查询name叫“yechaoa”的数据
query.addWhereEqualTo("name", "yechaoa");
//返回50条数据,如果不加上这条语句,默认返回10条数据
query.setLimit(50);
//执行查询方法
query.findObjects(new FindListener<Person>() {
@Override
public void done(List<Person> object, BmobException e) {
if (e == null) {
toast("查询成功:共" + object.size() + "条数据。");
mTextView.setText("查询成功:共" + object.size() + "条数据。");
for (Person person : object) {
//获得name的信息
person.getName();
//获得数据的objectId信息
person.getObjectId();
//获得createdAt数据创建时间(注意是:createdAt,不是createAt)
person.getCreatedAt();
}
} else {
toast("失败:" + e.getMessage() + "," + e.getErrorCode());
mTextView.setText("失败:" + e.getMessage() + "," + e.getErrorCode());
}
}
});
}
有查询条件、分页,也有联表查、模糊查找等等,尽在官方文档。
更多推荐
所有评论(0)