Android集成Bmob后端云

简介: Android集成Bmob后端云

Bmob 后端云 全方位一体化的后端服务平台

无需再造应用后端服务 轻松拥有开发中需要的各种后端能力


功能比较多,常用的比如数据库、推送统计、IM即时通讯、短信等

本文主要介绍集成和云数据库的基本使用,文档写的很详细,而且还有demo和视频教程。


Bmob:http://www.bmob.cn/

文档:http://doc.bmob.cn/data/android/index.html


创建应用

注册就不用说了吧。。


注册之后选择创建应用

image.png



创建之后,点击你的应用

image.png



这个时候可以看到已经默认建了一个user表,但是没有数据,上面的菜单栏也可以直接进行增删改查操作

image.png



左边导航栏的最下面有个设置,点击可以查看application id,初始化会用到

image.png



集成

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表,且有一条数据,就是刚才插入的。

image.png



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());
                }
            }
        });
    }

有查询条件、分页,也有联表查、模糊查找等等,尽在官方文档。


目录
相关文章
|
1月前
|
移动开发 监控 安全
mPaaS常见问题之Android集成dexPatch热修复运行时候无法正常进行热更新如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
1天前
|
存储 Java 数据库
如何在Spring Boot中集成Firebase实现移动应用后端
如何在Spring Boot中集成Firebase实现移动应用后端
|
1月前
|
Java 开发工具 Android开发
Android mk 集成app
Android mk 集成app
27 5
|
22天前
|
文字识别 Android开发 C++
Tesseract OCR集成Android Studio实现OCR识别
Tesseract OCR集成Android Studio实现OCR识别
36 0
|
1月前
|
安全 物联网 Android开发
构建未来:Android与IoT设备的无缝集成
【5月更文挑战第10天】 在数字化时代的浪潮中,智能设备与互联网的结合日益紧密。本文深入探讨了Android系统如何通过其开放性和灵活性成为连接物联网(IoT)设备的关键枢纽。我们将分析Android平台与IoT设备集成的技术途径,探索它们如何共同塑造智能家居、可穿戴技术以及工业自动化等领域的未来。文中不仅阐述了当前的发展状况,还展望了未来的发展趋势,特别是安全性和隐私保护方面的挑战及对策。
23 1
|
1月前
|
安全 Android开发 iOS开发
构建未来:安卓与iOS的无缝集成技术探索
【5月更文挑战第20天】随着智能设备的普及和技术的不断进步,安卓和iOS两大操作系统之间的界限正在逐渐模糊。本文将深入探讨如何通过最新的API、框架和工具实现安卓与iOS应用的无缝集成,以及这一趋势对开发者和用户的潜在影响。我们将从技术可行性、安全性挑战、用户体验优化等角度出发,分析当前的发展状况,并展望未来可能的技术融合路径。
|
1月前
|
存储 监控 安全
打造高效移动办公环境:Android与iOS平台的集成策略
【5月更文挑战第15天】 在数字化时代,移动办公不再是一种奢望,而是日常工作的必需。随着智能手机和平板电脑的性能提升,Android与iOS设备已成为职场人士的重要工具。本文深入探讨了如何通过技术整合,提高两大移动平台在企业环境中的协同工作能力,重点分析了各自平台上的系统集成策略、安全性考虑以及跨平台协作工具的应用。通过对现有技术的剖析与案例研究,旨在为读者提供一套实用的移动办公解决方案。
|
1月前
|
机器学习/深度学习 人工智能 TensorFlow
安卓中的人工智能:集成机器学习功能
【4月更文挑战第14天】在数字化时代,人工智能与机器学习正驱动安卓平台的技术革新。谷歌的ML Kit和TensorFlow Lite为开发者提供了便捷的集成工具,使得应用能实现图像识别、文本转换等功能,提升用户体验。尽管面临数据隐私和安全性的挑战,但随着技术进步,更强大的AI功能将预示着移动端的未来,为开发者创造更多创新机遇。
|
1月前
|
Android开发
Android 高通平台集成无源码apk示例
Android 高通平台集成无源码apk示例
35 0
|
1月前
|
Android开发
Android 集成vendor下的模块
Android 集成vendor下的模块
18 0