十二、Bmob免费移动后方服务,你不用再搭php+MySQL移动后端 Android studio+Bmob后台服务feedback简单实现

来源:互联网 发布:安卓 源码加密 混淆 编辑:程序博客网 时间:2024/05/22 05:10


BaasBackend as a Service它的主要特征是将云的某些能力封装起来,做成适合移动或web应用的功能,做成打包销售提供给用户;也就是将移动或web所需要的功能放在云上面以云软件的形式提供给使用者。

云后端服务(云存储)的优势:容易扩充、让移动开发者可以不去理会服务器性能优化和服务器代码编写

服务包括:账户的管理、消息推送、社交网络整合、异地信息服务、广告推广、应用推广

移动后端服务Baas提供商:

国外的有Stackmobkinveyamazon

国内的有:bmobavos cloudatom

Bmob的理念:Bmob解决了后端逻辑重复开发和维护的问题,无需后端编程和租用服务器让移动开发更简单

使用Bmob无需再造应用后端,便能轻松拥有应用开发的各种后端能力支持,减少了开发者将应用从idea到产品(成品)的时间,我们提供了大量标准的API接口,根据需要接入相关服务,开发者可以更加专注于应用的开发,让产品交付更快速。

Bmob官网地址:http://www.bmob.cn

 


Bmob账户:younghare

通过快速入门,你将学会如何使用bmob;如果你想提高使用bmob的功能可以跟技术大牛一起学习:视频教程;更详细的解释请查看Android开发文档

第一步:Bmob创建“czg学习演示”应用

先上个图

鉴于目前Google官方推荐使用Android Studio进行Android项目开发,自V3.4.2开始,Bmob Android SDK可以使用Gradle来进行包依赖管理,如果你使用Android Studio来进行基于BmobSDK的项目开发,建议你按照如下两个步骤进行:

一、Projectbuild.gradle文件中添加Bmobmaven仓库地址,示例如下:(注意文字说明部分):

代码如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.    buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.0.0'          // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}  allprojects {    repositories {        jcenter()        //Bmobmaven仓库地址,必须填写        maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }    }}  task clean(type: Delete) {    delete rootProject.buildDir}  

 

二、 appbuild.gradle文件中添加compile依赖文件,示例如下:(注意文字说明部分):
apply plugin: 'com.android.application'    android {    compileSdkVersion 23    buildToolsVersion "23.0.3"      //**bmob-sdk:3.4.6版本依赖包,用于兼容Android6.0系统**    useLibrary 'org.apache.http.legacy'      defaultConfig {        applicationId "czg.czgbmob"        minSdkVersion 15        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}  dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.3.0'        //以下SDK开发者请根据需要自行选择    //bmob-sdkBmobandroid sdk包,包含了Bmob的数据存储、文件等服务,以下是最新的bmob-sdk:    compile 'cn.bmob.android:bmob-sdk:3.4.6'    compile 'com.squareup.okhttp:okhttp:2.4.0'//`V3.4.3版本`开始,使用`okhttp`优化SDK的网络框架    compile 'com.squareup.okio:okio:1.4.0'    compile 'com.android.support:support-v4:23.2.1'    //:bmob-sdk:3.4.6需要依赖okhttp2.4.0)、okio2.4.0),如果需要兼容Android6.0系统,则还需要添加support-v423.2.1)及org.apache.http.legacy包,具体可查看下面注释[1]的解释          }
 
AndroidManifest.xml中增加权限代码
<!-- BmobSDK权限 --><!-- 允许联网 -->  <uses-permission android:name="android.permission.INTERNET" />  <!-- 获取GSM2g)、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" />  <!-- 推送权限 --><!-- 允许读取手机状态 -->  <uses-permission android:name="android.permission.READ_PHONE_STATE" />  <!-- 允许接收屏幕解锁广播 -->  <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />  <!-- 允许接收开机广播 -->  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  <!-- 其他权限 -->  <uses-permission android:name="android.permission.VIBRATE" />
 
创建一个activity名为BmobFeedbackActivity.java
package czg.czgbmob;    import android.support.v7.app.AppCompatActivity;  import android.os.Bundle;  import android.view.View;  import android.widget.EditText;  import android.widget.TextView;  import android.widget.Toast;    import java.util.List;    import cn.bmob.v3.Bmob;  import cn.bmob.v3.BmobQuery;  import cn.bmob.v3.listener.FindListener;  import cn.bmob.v3.listener.SaveListener;    public class BmobFeedbackActivity extends AppCompatActivity {    private EditText et_username,et_feedback,et_usernameQry;    private TextView tv_feedbackAll,tv_feedbackQry;      @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_bmob_feedback);          Bmob.initialize(this,"e7e000e141cac6a4c46e95117af566cc");  //appkey就是Bmob应用后台设置中的Application ID          et_username= (EditText) findViewById(R.id.et_username);        et_feedback= (EditText) findViewById(R.id.et_feedback);        tv_feedbackAll= (TextView) findViewById(R.id.tv_feedbackAll);        et_usernameQry= (EditText) findViewById(R.id.et_usernameQry);        tv_feedbackQry= (TextView) findViewById(R.id.tv_feedbackQry);    }    public void submitOnclick(View view){        String sUsername=et_username.getText().toString();        String sFeedback=et_feedback.getText().toString();        if (sUsername.equals("") || (sFeedback.equals(""))){            Toast.makeText(BmobFeedbackActivity.this,"用户名不能为空,反馈信息不能为空",Toast.LENGTH_LONG).show();        }else {            JavaBean_feeback javaBean_feeback =new JavaBean_feeback();            javaBean_feeback.setUsername(sUsername);            javaBean_feeback.setFeedback(sFeedback);            //调用Bmobsdk保存数据提交给“云服务器”通过回调方法处理成功与失败的情况            javaBean_feeback.save(BmobFeedbackActivity.this, new SaveListener() {                @Override                public void onSuccess() {                    Toast.makeText(BmobFeedbackActivity.this,"反馈信息成功!",Toast.LENGTH_LONG).show();                  }                  @Override                public void onFailure(int i, String s) {                    Toast.makeText(BmobFeedbackActivity.this,"反馈信息失败",Toast.LENGTH_LONG).show();                  }            });        }      }    public void queryAllOnclick(View view){        BmobQuery<JavaBean_feeback> javaBean_feebackBmobQuerys=new BmobQuery<JavaBean_feeback>();        javaBean_feebackBmobQuerys.findObjects(BmobFeedbackActivity.this, new FindListener<JavaBean_feeback>() {            @Override            public void onSuccess(List<JavaBean_feeback> list) {                //遍历查询结果                tv_feedbackAll.setText("========查询结果======");                for (JavaBean_feeback javaBean_feeback:list){                    tv_feedbackAll.append("\n" +"用户名:"+ javaBean_feeback.getUsername()+"反馈信息:"+javaBean_feeback.getFeedback());                  }              }              @Override            public void onError(int i, String s) {                Toast.makeText(BmobFeedbackActivity.this,"查询失败",Toast.LENGTH_LONG).show();              }        });        }    public void queryOnclick(View view){        String sUsernameQry=et_usernameQry.getText().toString();        if (sUsernameQry.equals("")){            Toast.makeText(BmobFeedbackActivity.this,"请输入用户名",Toast.LENGTH_LONG).show();            return;        }          BmobQuery<JavaBean_feeback> javaBean_feebackBmobQuerys=new BmobQuery<JavaBean_feeback>();        //设置查询条件,可以设置多个条件查询,类似sql语句的where条件        javaBean_feebackBmobQuerys.addWhereEqualTo("username",sUsernameQry);        javaBean_feebackBmobQuerys.findObjects(BmobFeedbackActivity.this, new FindListener<JavaBean_feeback>() {            @Override            public void onSuccess(List<JavaBean_feeback> list) {                //遍历查询结果                tv_feedbackQry.setText("========按用户名查询结果======");                for (JavaBean_feeback javaBean_feeback:list){                    tv_feedbackQry.append("\n" +"用户名:"+ javaBean_feeback.getUsername()+"反馈信息:"+javaBean_feeback.getFeedback());                  }              }              @Override            public void onError(int i, String s) {                Toast.makeText(BmobFeedbackActivity.this,"查询失败",Toast.LENGTH_LONG).show();              }        });    }}
 
Activity的布局代码activity_bmob_feedback.xml
<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".BmobFeedbackActivity">      <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/et_username"        android:hint="请输入用户名" />      <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/et_feedback"        android:hint="输入反馈的问题"        android:lines="2" />      <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="提交"        android:id="@+id/btn_submit"        android:layout_gravity="center_horizontal"        android:onClick="submitOnclick" />      <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="查询所有的反馈信息"        android:id="@+id/btn_QueryAll"        android:onClick="queryAllOnclick"        android:layout_gravity="center_horizontal" />      <ScrollView        android:layout_width="match_parent"        android:layout_height="114dp"        android:id="@+id/scrollView" >          <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="------显示所有查询到的记录-----"            android:id="@+id/tv_feedbackAll" />    </ScrollView>      <LinearLayout        android:orientation="horizontal"        android:layout_width="match_parent"        android:layout_height="wrap_content">          <EditText            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:id="@+id/et_usernameQry"            android:layout_weight="1"            android:hint="要查询的用户名" />          <Button            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="查询"            android:id="@+id/btn_query"            android:onClick="queryOnclick"            android:layout_weight="1" />      </LinearLayout>      <ScrollView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/scrollView2"        android:layout_gravity="center_horizontal" >          <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="------显示按用户名查询的反馈记录-----"            android:id="@+id/tv_feedbackQry" />    </ScrollView>  </LinearLayout>
 
创建一个javaBeanjavaBean_feeback.java
package czg.czgbmob;    import cn.bmob.v3.BmobObject;    /** * Created by Administrator on 2016/5/12. * 在使用Bmobsdk去存储一行数据的时候,我们需要javaBean继承至BmobObject这个类 * javaBean_feeback实际上是对应数据库上的一张表,属性名就对于表中的字段名,一个javaBean_feeback对象就是对于表中的一条记录 * 当用户提交到云数据库,程序调用的时javaBean_feeback.save方法。它会自动判断后台有没有创建国与javaBean_feeback同名的表, *          如果没有则会创建对于的javaBean_feeback表。表的结构有objectidjavaBean_feeback各个属性字段,createAt date,UpdateAt date,ACL Acl字段 */  public class JavaBean_feeback extends BmobObject {    private String username;    private String feedback;      public String getFeedback() {        return feedback;    }      public void setFeedback(String feedback) {        this.feedback = feedback;    }      public String getUsername() {        return username;    }      public void setUsername(String username) {        this.username = username;    }}
 
源码下载:https://yunpan.cn/cP7X8WsBCMm9t  访问密码 466e
 
0 0
原创粉丝点击