注册Bmob帐号

在网址栏输入www.bmob.cn或者在百度输入Bmob进行搜索,打开Bmob官网后,点击右上角的“注册”,在跳转页面填入你的姓名、邮箱、设置密码,确认后到你的邮箱激活Bmob账户,你就可以用Bmob轻松开发应用了。

数据服务 Android SDK 快速入门 - 图1

网站后台创建应用

登录账号进入bmob后台后,点击后台界面左上角“创建应用”,在弹出框输入你应用的名称,然后确认,你就拥有了一个等待开发的应用。

数据服务 Android SDK 快速入门 - 图2

获取应用密钥和下载SDK

选择你要开发的应用,进入该应用

数据服务 Android SDK 快速入门 - 图3

在跳转页面,进入设置/应用密钥,点击复制,即可得到Application ID

数据服务 Android SDK 快速入门 - 图4

获取Application ID后,下载SDK(下载地址:http://www.bmob.cn/site/sdk#android_sdk)。

数据服务 Android SDK 快速入门 - 图5

SDK导入

AndroidStudio配置

鉴于目前Google官方推荐使用 Android Studio 进行Android项目开发,自 V3.4.2 开始,Bmob Android SDK 可以使用Gradle来进行包依赖管理,如果你使用Android Studio来进行基于BmobSDK的项目开发,有两种方式:

自动导入(推荐)

请按照如下两个步骤进行:

  1. Projectbuild.gradle 文件中添加 Bmob的maven仓库地址,示例如下:(注意文字说明部分):

    1. buildscript {
    2. repositories {
    3. jcenter()
    4. }
    5. dependencies {
    6. classpath 'com.android.tools.build:gradle:1.2.3'
    7. }
    8. }
    9. allprojects {
    10. repositories {
    11. jcenter()
    12. //Bmob的maven仓库地址--必填
    13. maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
    14. }
    15. }
  1. appbuild.gradle文件中添加compile依赖文件,示例如下:(注意文字说明部分):
  1. apply plugin: 'com.android.application'
  2. android {
  3. compileSdkVersion 22
  4. buildToolsVersion '22.0.1'
  5. **兼容Android6.0系统所需,如果这句话报错,可在dependencies标签下使用compile 'cn.bmob.android:http-legacy:1.0'**
  6. useLibrary 'org.apache.http.legacy'
  7. ...
  8. }
  9. dependencies {
  10. compile fileTree(dir: 'libs', include: ['*.jar'])
  11. //以下SDK开发者请根据需要自行选择
  12. //bmob-sdk:Bmob的android sdk包,包含了Bmob的数据存储、文件等服务,以下是最新的bmob-sdk:
  13. //3.5.5:请务必查看下面注释[1]
  14. compile 'cn.bmob.android:bmob-sdk:3.5.5'
  15. //bmob-push:Bmob的推送包
  16. compile 'cn.bmob.android:bmob-push:0.8'
  17. //bmob-im:Bmob的即时通讯包,注意每个版本的im依赖特定版本的bmob-sdk,具体的依赖关系可查看下面注释[2]
  18. compile 'cn.bmob.android:bmob-im:2.0.5@aar'
  19. compile 'cn.bmob.android:bmob-sdk:3.4.7-aar'
  20. //bmob-sms :Bmob单独为短信服务提供的包
  21. compile 'cn.bmob.android:bmob-sms:1.0.1'
  22. //如果你想应用能够兼容Android6.0,请添加此依赖(org.apache.http.legacy.jar)
  23. compile 'cn.bmob.android:http-legacy:1.0'
  24. }

注:

[1]、为了降低开发者的使用成本,自v3.4.7开始,同步提供aar格式的文件,此aar包含libbmob.so、依赖jar包(okhttp、okio、rx、gson等)及自动更新组件所需要的资源文件。开发者再也不需要配置libbmob.so,不需要添加依赖jar,也不需要复制自动更新组件的资源文件啦,只需要添加以下依赖即可。

  1. compile 'cn.bmob.android:bmob-sdk:3.5.0'

注:由于PermissionManager权限管理类需要依赖support-v4:23.2.1的jar包,导致开发者认为SDK依赖文件较多,故分离出SDK。开发者如果需要兼容Android6.0系统,可以在下载的SDK的官方Demo的com.example.bmobexample.permission包下面查看该类源码。

[2]、每个版本的im依赖特定版本的bmob-sdk:

  • bmob-im:1.1.8--->bmob-sdk:3.3.5
  • bmob-im:1.1.9--->bmob-sdk:3.4.3
  • bmob-im:2.0.1--->bmob-sdk:3.4.6-0304
  • bmob-im:2.0.2--->bmob-sdk:3.4.6-0304
  • bmob-im:2.0.3--->bmob-sdk:3.4.6
  • bmob-im:2.0.4--->bmob-sdk:3.4.6
  • bmob-im:2.0.5--->bmob-sdk:3.4.7-aar
  • bmob-im:2.0.6--->bmob-sdk:3.5.0

其中

  • bmob-sdk:3.4.6-0304是Bmob Android SDK的过渡版本,主要用于NewIM_v2.0.1及v2.0.2
  • bmob-sdk:3.4.6的相关依赖包可见注释[3]

[3]、bmob-sdk:3.4.6依赖以下包:

  1. compile 'cn.bmob.android:bmob-sdk:3.4.6'
  2. compile 'com.squareup.okhttp:okhttp:2.4.0'//CDN文件服务使用okhttp相关包进行文件的上传和下载(必填)
  3. compile 'com.squareup.okio:okio:1.4.0'

如果需要兼容Android6.0系统,请添加以下两项:

  1. compile 'com.android.support:support-v4:23.2.1'
  2. compile 'cn.bmob.android:http-legacy:1.0'

[4]、bmob-sms适用于只需要使用Bmob短信功能的开发者,而bmob-sdk内部包含了bmob-sms的短信功能,请不要重复添加。

[5]、BmobSDK的官方仓库:bmob-android-sdk,开发者可到此仓库查看最新发布的各版本SDK,我们会尽量与官网发布的SDK保持同步更新。

手动导入

  1. 开发者到SDK下载中心下载 数据服务 的Android 版本的SDK,并将下载下来的libs文件夹里面的文件根据需要复制到工程的libs目录下(注意,自v3.4.7开始提供libbmob.so文件);

  2. appbuid.gradle文件中添加SO库目录配置:

    1. android {
    2. sourceSets {
    3. main.jniLibs.srcDirs = ['libs']
    4. }
    5. }
  3. 点击Sync,同步配置。

Eclipse导入

开发者到 SDK下载中心 下载 数据服务 的Android 版本的SDK,在Eclipse工程的项目根目录中新建libs文件夹,将下载的jar包添加到此文件夹即可。

注:

1、若配置不成功,则需要额外增加以下步骤:

右键工程根目录,选择Properties -> Java Build Path -> Libraries,然后点击Add External JARs... 选择指向该libs文件夹下的jar的路径,点击OK即可

2、BmobSDK_v3.5.0需要依赖rxjava(1.1.6)、rxandroid(1.2.0)、gson(2.6.2)、okhttp3(3.3.1)、okio(1.7.0)libbmob.so库;

3、BmobSDK_v3.4.7需要依赖okhttp3(3.2.0)、okio(1.7.0)libbmob.so库;

4、BmobSDK_v3.4.6需要依赖okhttp(2.4.0)、okio(1.4.0),如果需要兼容Android6.0系统,则还需要添加support-v4(23.2.1)及org.apache.http.legacy依赖包。

配置AndroidManifest.xml

在你的应用程序的AndroidManifest.xml文件中添加相应的权限:

  1. <!--允许联网 -->
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息 -->
  4. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  5. <!--获取wifi网络状态的信息 -->
  6. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  7. <!--保持CPU 运转,屏幕和键盘灯有可能是关闭的,用于文件上传和下载 -->
  8. <uses-permission android:name="android.permission.WAKE_LOCK" />
  9. <!--获取sd卡写的权限,用于文件上传和下载-->
  10. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  11. <!--允许读取手机状态 用于创建BmobInstallation-->
  12. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="cn.bmob.example"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>
  7. <uses-permission android:name="android.permission.INTERNET" />
  8. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  9. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  10. <uses-permission android:name="android.permission.WAKE_LOCK" />
  11. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  12. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  13. <application
  14. android:allowBackup="true"
  15. android:icon="@drawable/ic_launcher"
  16. android:label="@string/app_name"
  17. android:theme="@style/AppTheme">
  18. <activity
  19. android:name="cn.bmob.example.MainActivity"
  20. android:screenOrientation="portrait"
  21. android:label="@string/app_name">
  22. <action android:name="android.intent.action.MAIN"/>
  23. <category android:name="android.intent.category.LAUNCHER"/>
  24. <activity
  25. android:name=".CreateActivity"
  26. android:screenOrientation="portrait">
  27. <activity
  28. android:name=".DeleteActivity"
  29. android:screenOrientation="portrait">
  30. <activity
  31. android:name=".UpdateActivity"
  32. android:screenOrientation="portrait">
  33. <activity
  34. android:name=".FindActivity"
  35. android:screenOrientation="portrait">
  36. </application>
  37. </manifest>

初始化BmobSDK

在你应用程序启动的Activity的onCreate()方法中初始化Bmob功能。代码如下所示:

  1. package com.bmob.example;
  2. import cn.bmob.v3.Bmob;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. public class MainActivity extends Activity {
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. // TODO Auto-generated method stub
  9. super.onCreate(savedInstanceState);
  10. //提供以下两种方式进行初始化操作:
  11. //第一:默认初始化
  12. Bmob.initialize(this, "Your Application ID");
  13. // 注:自v3.5.2开始,数据sdk内部缝合了统计sdk,开发者无需额外集成,传渠道参数即可,不传默认没开启数据统计功能
  14. //Bmob.initialize(this, "Your Application ID","bmob");
  15. //第二:自v3.4.7版本开始,设置BmobConfig,允许设置请求超时时间、文件分片上传时每片的大小、文件的过期时间(单位为秒),
  16. //BmobConfig config =new BmobConfig.Builder(this)
  17. ////设置appkey
  18. //.setApplicationId("Your Application ID")
  19. ////请求超时时间(单位为秒):默认15s
  20. //.setConnectTimeout(30)
  21. ////文件分片上传时每片的大小(单位字节),默认512*1024
  22. //.setUploadBlockSize(1024*1024)
  23. ////文件的过期时间(单位为秒):默认1800s
  24. //.setFileExpiration(2500)
  25. //.build();
  26. //Bmob.initialize(config);
  27. }
  28. }

添加一行数据

首先创建JavaBean(对应为Bmob后台的数据表,更详细的解释请查看Android开发文档

  1. public class Person extends BmobObject {
  2. private String name;
  3. private String address;
  4. public String getName() {
  5. return name;
  6. }
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public String getAddress() {
  11. return address;
  12. }
  13. public void setAddress(String address) {
  14. this.address = address;
  15. }
  16. }

添加数据

  1. Person p2 = new Person();
  2. p2.setName("lucky");
  3. p2.setAddress("北京海淀");
  4. p2.save(new SaveListener<String>() {
  5. @Override
  6. public void done(String objectId,BmobException e) {
  7. if(e==null){
  8. toast("添加数据成功,返回objectId为:"+objectId);
  9. }else{
  10. toast("创建数据失败:" + e.getMessage());
  11. }
  12. }
  13. });

如果toast出添加数据成功的消息,你会在Bmob对应Application Id的数据表中看到有一行新增的数据,如下图所示:

数据服务 Android SDK 快速入门 - 图7

获取一行数据

  1. //查找Person表里面id为6b6c11c537的数据
  2. BmobQuery<Person> bmobQuery = new BmobQuery<Person>();
  3. bmobQuery.getObject("6b6c11c537", new >QueryListener<Person>() {
  4. @Override
  5. public void done(Person object,BmobException e) {
  6. if(e==null){
  7. toast("查询成功");
  8. }else{
  9. toast("查询失败:" + e.getMessage());
  10. }
  11. }
  12. });

修改一行数据

  1. //更新Person表里面id为6b6c11c537的数据,address内容更新为“北京朝阳”
  2. Person p2 = new Person();
  3. p2.setAddress("北京朝阳");
  4. p2.update("6b6c11c537", new UpdateListener() {
  5. @Override
  6. public void done(BmobException e) {
  7. if(e==null){
  8. toast("更新成功:"+p2.getUpdatedAt());
  9. }else{
  10. toast("更新失败:" + e.getMessage());
  11. }
  12. }
  13. });

删除一行数据

  1. Person p2 = new Person();
  2. p2.setObjectId("6b6c11c537");
  3. p2.delete(new UpdateListener() {
  4. @Override
  5. public void done(BmobException e) {
  6. if(e==null){
  7. toast("删除成功:"+p2.getUpdatedAt());
  8. }else{
  9. toast("删除失败:" + e.getMessage());
  10. }
  11. }
  12. });

源码下载

快速入门相关源码下载

案例教程和源码是快速入门的最简单方法,Bmob也为大家准备了相关的案例教程和源码,欢迎大家下载和查看。

为方便大家更好的理解Bmob SDK能够做的事情,我们还特意为大家提供了一些源码,大家可以下载之后,嵌入Bmob的AppKey,再打包运行。

阅读源码是一种良好的习惯!!

即时聊天案例源码:https://github.com/bmob/BmobIMSDK4Android

图文社区案例源码:https://git.oschina.net/v7/Wonderful 这个案例是猿圈媛圈开发团队提供的。

校园小菜案例源码:https://github.com/bmob/Shop 这个案例是湖工大的朋友提供的。

社交分享案例源码:https://github.com/bmob/bmob-android-social-share 这个是金刚锁开发者提供的

第三方登录案例源码:https://github.com/bmob/bmob-android-demo-thirdpartylogin 包含第三方登录和登录后获取用户信息的源码

阅读更多的文档

  1. 快速入门只是提供了最最基本的介绍,如果你想了解更多的功能,请查看我们的详细开发文档:http://docs.bmob.cn/data/Android/b_developdoc/doc/index.html
  2. 如果想看下SDK的类库文档,可以移步这里