本人初次使用Bmob可以追溯到2014年刚进入IT行业的“遥远”的过去,想当年我借用Bmob开源的IM客户端,再在Bmob控制台创建一个应用作为客户端的服务端,基本不用写多少代码就这么把一个聊天App做出来了,还有声有色地介绍给小伙伴们,势有一种要把腾讯QQ踩在脚底下的豪迈之感... 几年过去了,QQ还是那个QQ,而我的聊天App早已不知归处...
Bmob拥有一个完整后端解决方案,即可以作为Android App、iOS App、Web网页、微信小程序等应用的服务端,使得开发者即使不会后台技术也可以开发出具有服务端的应用。本文介绍Bmob Android SDK的简单使用和一些使用心得。
一、注册账号并了解免费额度
Bmob官网是 www. bmob .cn , 点击这个链接(包含我盛情的邀请码)进入首页并用邮箱注册即可。注册并登录后点击首页右上角我的控制台
按钮可以进入你的应用列表,新用户是空白的,你可以先创建一个感受一下,以后可以随时删除的,只需填入应用名称和选择应用类型,再选择开发免费版本即可。名称随便填,类型你选一个顺眼的,点击下一步
按钮就创建成功了。这时可以看到你刚刚创建的应用,你可以创建多个应用,都会显示在这个页面形成一个应用列表。点击你创建的应用,进入应用详情页,可以看到左侧默认有一个_User
,这是一个系统生成的数据表,这个表一般用来存储你的应用的用户信息,包括用户名、密码等(如果需要用户系统的话),你还可以手动创建更多的数据表,并在每个数据表里创建数据列,就像一个Excel,这是Bmob的核心,Bmob提供很多功能对数据表们的操作(主要对应于对数据库的增删改查
)。
进入应用详情页之后我们去看看免费的开发版本可以有多少使用额度,点击最左侧设置
按钮,我们可以看到该应用的所有的设置选项,包括密钥什么的。再点击套餐升级
, 在这个页面,你可以看到API请求每月额度为1000000次,是一百万次哦,也就是说,你的应用每个月最多可以免费访问你的数据表一百万次哦!再换句话,你可以每个月免费对你的数据表进行最多一百万次增删改查!作为新开发的应用,每个月能用个几千次就很多了,本人的App目前每月访问数据表不到十万次,感觉在未来很长的时间内都不会达到免费额度的上限。需要注意的是,这一百万次额度是你这个账户所有应用访问Bmob次数的总和,而不是你这一个应用的额度。其他的还有存储额度、流量额度,这像是一个小型的网盘,专门给你的应用存储和传输文件用的。至于短信额度,一般是用户注册或者用户验证用的,新用户有优惠,可以买一些备用,像我这种体验不到优惠的老用户就只能忍受“高价”了。
二、阅读并了解Bmob开发文档
Bmob Android SDK拥有非常完备的开发文档(其他的没去了解,估计也差不多),以至于再写博客教程已无必要,那么就让我们带着求学之心,一起走入精彩的CCTV探索频道(误,应该是Bmob开发文档)...
Bmob开发文档分为两个部分,第一部分为快速入门,让你在几分钟之内实现最简单的增删改查操作,我们称之为Bmob之初体验
。第二部分为详细文档,这部分才是重点,需要你花几个小时仔细阅读,并跟着敲代码实践,学成之后你将能游刃有余地驾驭Bmob,体验Bmob的所有精髓和细节,我们称之为Bmob之驭龙术
。
But,但是!咱不必这么贪吃,咱得有取有舍,哪些功能需要用到,咱就去学,用不到,咱先放那,等到要用的时候知道在哪里能找到,再去学就可以了,所以我也没有掌握Bmob的驭龙术。这也是我一贯的学习方法。难不成你真的花几个小时去阅读文档?或者,你确定只需要几个小时就能掌握?又或者,你对Bmob有多爱?
废话不多说(已经很多了!),我们先来初体验一番,点击 初体验 进入快速入门,你看看截图都给我截好了,但是文字岂有我的生(luo)动(li)有(ba)趣(suo)?搞得我都不好意思了,总不能丢一句:你去看官方文档吧,还是得装模作样“教程”一番。
导入jar包、so库、完成gradle文件配置(这些怎么做?去看官方文档)之后,我们来到了Manifest文件,进行权限填写。什么?竟然要填READ_PHONE_STATE
权限?我有代码洁癖,这么敏感的权限我才不填,至于你填不填,当然是填啊,反正国内的App环境早就乌烟瘴气了。官方解释需要这个权限用于创建BmobInstallation
,我说,我们有更好的办法确定唯一的用户,没必要读取用户的IMEI码,Google也说了,避免读取设备的硬件标识符,Google确实是说避免
,你难道反驳反正Google没有禁止所以就要读取吗?咱开发者能不能有点追求(追求啥,当然是Google啊!)?不信?去不存在的网站看个究竟!
在快速入门环节,我们有几个类和方法需要注意:
- Bmob.initialize(this, "Your Application ID"); // 初始化之用
- (? extends BmobObject).save(new SaveListener<?>() {} // 将BmobObject子类的对象存入以子类名为数据表名的数据表中,并实现保存结果的监听。*
- new BmobQuery<? extend BmobObject>().getObject("object id", new QueryListener<?>(){}// 根据id(自动生成的字符串)获取该对象。
- new BmobQuery<? extend BmobObject>().update("object id", new UpdateListener(){} // 修改指定id的对象
- new BmobQuery<? extend BmobObject>().setObjectId("object id").delete(new UpdateListener() {}// 删除指定id的对象
以上都是伪代码,应该能看得明白吧?
紧接着,咱进入终极篇之驭龙术篇,从上扫下来,有一个词成功地引起了我的注意,因为这个词很大:兼容Android6.0系统
。我觉得吧,要是放三年前,可以用兼容
一词,因为6.0还很少人用。但是现在2018年6.0都是老系统了,Apache的HTTP-client已经被Android废除三年了,你们还在支持,甚至,我居然还看到了对eclipse的支持,请问尊敬的Bmob开发人员,您跟紧Google的脚步了吗?别掉队太多哦~说好的追求呢!
容我copy一句:目前为止,Bmob支持的数据类型:String、Integer、Float、Short、Byte、Double、Character、Boolean、Object、Array。 同时也支持BmobObject、BmobDate、BmobGeoPoint、BmobFile特有的数据类型。
也就是说,咱使用基本数据类型如int
时要使用它的包装类也就是Integer
,何解(读gǎi)呢?因为Bmob自有妙算。
吃饭去了。