技术经验分享:Bmob基础

简介: 技术经验分享:Bmob基础

  BaaS是指专为移动应用开发者提供整合云后端的服务。开发者无需过多研究服务器端程序,而只需调用云计算平台提供的API,使用相应SDK,就能迅速完成数据存储、账户管理、消息推送、社交网络整合等功能。本文介绍了六款你必用的移动后端云服务/产品。  


  一款移动应用一旦需要后端服务的强大支撑时,开发商就必须考虑基础架构、服务集成、可伸缩性等繁冗复杂的问题。而在这些方面耗费的大量时间精力财力却不能直接提升App的用户体验。


为了解决这些问题,部分App发行商租用了譬如AWS(Amazon Web Services)的公有云服务,有的则部署内部专用的私有云服务。而移动开发团队越来越趋向于小规模化,架设需要高成本运营的服务器群或许并不是最好的方法,租用或免费使用后端云服务开始流行起来。


  BaaS(后端即服务)悄然兴起


  移动应用开发领域目前有一个BaaS(后端即服务:Backend as a Service)的概念。BaaS是指为移动应用开发者提供整合云后端的边界服务。现在,BaaS生态系统正从一个小众垂直领域迅速成为非常重要的行业环节。


  BaaS服务提供商的基础服务是数据/文件存储,主要帮助App开发者解决存储的问题。更进一步的集成服务则包括:账户管理、消息推送、社交网络整合、地理位置与广告等。BaaS分两种模式:一种是API模式,让开发者自己拓展代//代码效果参考:http://www.jhylw.com.cn/422923963.html

码;另一种是SDK模式,提供如iOS、Android及Windows Phone等的SDK。

  目前,国外比较知名的BaaS服务提供商是StackMob和Parse。在国内,Talking Data、友盟、Bmob、百度和新浪开放平台均有相关业务。


  本篇就带领大家一起来简单使用一下Bmob的开发,个人感觉还是很方便的。开发平台选择Android,由于IOS的高成本,无力支付高昂的硬件成本,所以就不再提IOS问题了。


  工欲善其事,必先利其器。首先我们需要到Bmob的官网:


  下载需要的jar包(Android SDK),解压里面有三个文件,两个jar文件是我们开发需要的jar包,另外一个文件,是Bmob为我们提供的一个参考实例。下载好之后下载之后我们还需要注册一个账号,然后进入后台,点击创建应用,开始我们的Bmob之旅。


  Bmob为我们开发熟悉提供的了详细的文档支持,大家也可以参考一下官网的文档,本篇我将带领大家通过实现一个登录的功能来,来进一步认识Bmob的功能。


  第一步:登录Bmob,然后进入后台,点击创建应用,这是系统我们的生成了一个应用,点击进入应用,会看到系统为我们生成Key,到这里我们在Bmob上的工作就可以告一段落了。


  第二步:创建Android应用,通过Eclipse或Android Stdio新建一个工程项目,然后把我们刚刚下载好的jar包拷贝到工程的libs文件下,将jar包导入到我们的项目中。


  第三步:修改我们的布局文件,我们实现的是登录,所以我们需要写一个登录界面:



xmlns:tools="http://schemas.android.com/tools"


android:layout_Width</span>="match_parent"


android:layout_Height</span>="match_parent"


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=".MainActivity" >


[span style="color: rgba(0, 0, 0, 1)">TextView


android:id="@+id/textView2"


android:layout_Width</span>="wrap_content"


android:layout_Height</span>="wrap_content"


android:layout_below="@+id/editText1"


android:layout_marginTop="24dp"


android:layout_toLeftOf="@+id/editText2"


android:text="@string/pwd" />


[span style="color: rgba(0, 0, 0, 1)">TextView


android:id="@+id/textView1"


android:layout_Width</span>="wrap_content"


android:layout_Height</span>="wrap_content"


android:layout_alignParentTop="true"


android:layout_marginTop="37dp"


android:layout_toLeftOf="@+id/editText1"


android:text="@string/name" />


[span style="color: rgba(0, 0, 0, 1)">EditText


android:id="@+id/editText2"


android:layout_Width</span>="wrap_content"


android:layout_Height</span>="wrap_content"


android:layout_alignBaseline="@+id/textView2"


android:layout_alignBottom="@+id/textView2"


android:layout_toRightOf="@+id/textView1"


android:hint="@string/input_pwd"


android:singleLine="true"


android:password="true"


android:maxLength="8"


android:ems="10" />


[span style="color: rgba(0, 0, 0, 1)">EditText


android:id="@+id/editText1"


android:layout_Width</span>="wrap_content"


android:layout_Height</span>="wrap_content"


android:layout_alignBaseline="@+id/textView1"


android:layout_alignBottom="@+id/textView1"


android:layout_alignParentRight="true"


android:hint="@string/input_name"


android:singleLine="true"


android:ems="10" >


[span style="color: rgba(0, 0, 0, 1)">Button


android:id="@+id/button1"


android:layout_Width</span>="wrap_content"


android:layout_Height</span>="wrap_content"


android:layout_alignLeft="@+id/textView1"


android:layout_below="@+id/editText2"


android:layout_marginTop="22dp"


android:text="@string/login" />


[span style="color: rgba(0, 0, 0, 1)">Button


android:id="@+id/button2"


android:layout_Width</span>="wrap_content"


android:layout_Height</span>="wrap_content"


android:layout_alignBaseline="@+id/button1"


android:layout_alignBottom="@+id/button1"


android:layout_marginLeft="48dp"


android:layout_toRightOf="@+id/button1"


android:text="@string/add" />


  第四步、添加权限,在AndroidManifest.xml文件中,将官网为我们声明的权限添加进去:








  第五步、创建我们的登录对象类(Imooc.java),因为我们和Bmob之间的通信是借助类完成的。


@SuppressWarnings("serial")


public class Imooc extends BmobObject{


private String name;


private String password;


public String getName() {


return name;


}


public void setName(String name) {


this.name = name;


}


public String getPassword() {


return password;


}


public void setPassword(String password) {


this.password = password;


}


public Imooc(String name, String password) {


super();


this.name = name;


this.password = password;


}


}


   最后一步、我们的MainActivity.java:


public class MainActivity extends Activity implements OnClickListener{


private EditText name;


private EditText password;


private Button login;


private Button add;


private String input_name;


private String input_password;


@Override


protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);


setContentView(R.layout.activity_main);


// 初始化 Bmob SDK


// 使用时请将第二个参数Application ID替换成你在Bmob服务器端创建的Application ID


Bmob.initialize(this, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");


init();


}


private void init() {


name = (EditText) findViewById(R.id.editText1);


password = (EditText) findViewById(R.id.editText2);


login = (Button) findViewById(R.id.button1);


add = (Button) findViewById(R.id.button2);


login.setOnClickListener(this);


add.setOnClickListener(this);


}


private void getEditTextValue(){


input_name = name.getText().toString();


input_password = password.getText().toString();


}


@Override


public boolean onCreateOptionsMenu(Menu menu) {


getMenuInflater().inflate(R.menu.main, menu);


return true;


}


@Override


public void onClick(View arg0) {


switch (arg0.getId()) {


case R.id.button1:


this.getEditTextValue();


this.Login();


break;


case R.id.button2:


this.getEditTextValue();


this.Add();


break;


}


}


public void Login(){


if(input_name.equals("")||input_password.equals("")){


return;


}


BmobQuery query = new BmobQuery();


query.addWhereEqualTo("name", input_name);


query.findObjects(this, new FindListener() {


@Override


public void onSuccess(List arg0) {


if(arg0.size()!=0){


for(Imooc imooc : arg0){


if(imooc.getPassword().equals(input_password)){


Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();


break;


}else{


password.setText("");


password.requestFocus();


Toast.makeText(MainActivity.this, "密码输入有误", Toast.LENGTH_SHORT).show();


}


}


}else{


Toast.makeText(MainActivity.this, "请先注册", Toast.LENGTH_SHORT).show();


}


}


@Override


public void onError(int arg0, String arg1) {


Toast.makeText(MainActivity.this, "系统出错啦", Toast.LENGTH_SHORT).show();


}


});


}


public void Add(){


if(input_name.equals("")||input_password.equals("")){


return;


}


Imooc imooc = new Imooc(input_name, input_password);


imooc.save(this, new SaveListener() {


@Override


public void onSuccess() {


Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_SHORT).show();


//代码效果参考:http://www.jhylw.com.cn/515841336.html

}

@Override


public void onFailure(int arg0, String arg1) {


Toast.makeText(MainActivity.this, "注册失败", Toast.LENGTH_SHORT).show();


}


});


}


}


  最后附一张效果图:

相关文章
|
弹性计算 安全 网络安全
搭建简易多人在线视频会议系统
本场景将介绍使用音视频服务单间一个简易的视频会议室。
|
JavaScript 前端开发
在VSCode中 使用 ESLint + Prettier检查代码规范及自动格式化前端Vue代码
般的代码格式化工作,ESLint完全可以胜任,为什么要用Prettier代替ESLint的代码格式化功能?简而言之,Prettier的代码格式化功能比ESLint更强大,配置更简单,通过配置,ESLint可以使用Prettier的代码规则进行校验,如果不配置好,会出现冲突,导致二者不能配合使用。 下面详细介绍如何配置ESLint+Prettier在VSCode中开发Vue代码:
1862 29
在VSCode中 使用 ESLint + Prettier检查代码规范及自动格式化前端Vue代码
|
7月前
|
Oracle Cloud Native 关系型数据库
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
328 11
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
|
12月前
|
人工智能 Java 程序员
HarmonyOS实战开发之HMRouter实现跳转
本文介绍了HarmonyOS页面跳转的两种方式:组件导航(Navigation)和页面路由(@ohos.router),并推荐使用更灵活的组件导航。进一步详细讲解了HMRouter,一个解决HarmonyOS页面跳转问题的框架,其功能包括页面跳转、弹窗提示、转场动效等。通过下载依赖、配置插件、初始化和实现跳转四个步骤,可以轻松集成HMRouter,实现高效页面管理。文章还展示了具体代码示例和效果截图,帮助开发者快速上手。关注Feri,带你掌握鸿蒙开发技巧!
811 1
|
12月前
|
搜索推荐 数据挖掘 双11
淘宝运营进阶秘籍:从业余到专业
淘宝运营涉及市场分析、产品定位、店铺装修、营销推广、客户服务、数据分析等多环节。要脱颖而出,需掌握进阶秘籍。本文从精准定位、店铺装修、定价策略、流量获取、客户服务、数据分析及跨平台合作七大方面深入探讨,助商家实现从平凡到卓越的蜕变。通过目标受众分析、优化店铺形象、合理定价、多种促销手段、提升客户体验、利用数据反馈调整策略以及拓展销售渠道,商家可逐步提升运营能力,在竞争激烈的电商环境中取得成功。
1486 4
|
机器学习/深度学习 传感器 编解码
史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)
以视觉为中心的俯视图(BEV)感知最近受到了广泛的关注,因其可以自然地呈现自然场景且对融合更友好。随着深度学习的快速发展,许多新颖的方法尝试解决以视觉为中心的BEV感知,但是目前还缺乏对该领域的综述类文章。本文对以视觉为中心的BEV感知及其扩展的方法进行了全面的综述调研,并提供了深入的分析和结果比较,进一步思考未来可能的研究方向。如下图所示,目前的工作可以根据视角变换分为两大类,即基于几何变换和基于网络变换。前者利用相机的物理原理,以可解释性的方式转换视图。后者则使用神经网络将透视图(PV)投影到BEV上。
史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)
|
SQL 关系型数据库 MySQL
常用的数据库链接工具都有哪些
常用的数据库链接工具都有哪些
1686 2
|
程序员 C++
空指针:深入探讨、危害与应对策略
空指针:深入探讨、危害与应对策略
1015 10
|
机器学习/深度学习 人工智能 自然语言处理
ai基础知识
人工智能基础知识包括定义与概念、机器学习、深度学习、计算机视觉、自然语言处理和机器人学。数学与算法、编程语言(如Python)及计算资源(GPU、CPU)是其技术基础。数据是AI的关键,机器学习流程涉及数据预处理、特征工程、模型训练到部署。持续学习还包括对伦理、隐私和可解释性AI的理解。
2461 1