Bmob 开发 Android程序快速入门 11 其他功能
获取服务器时间
在Bmob对象中提供了一个静态方法,用于获取服务器时间。
Bmob.getServerTime(MainActivity.this, new GetServerTimeListener() {
@Override
public void onSuccess(long time) {
// TODO Auto-generated method stub
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm");
String times = formatter.format(new Date(time * 1000L));
toast("当前服务器时间为:" + times);
}
@Override
public void onFailure(int code, String msg) {
// TODO Auto-generated method stub
toast("获取服务器时间失败:" + msg);
}
});
短信服务
由于Bmob官方对外提供的服务都是免费的,而短信服务产生的费用我们无法把控,因此短信服务的功能我们没有直接对外提供,而主要针对有需要的合作客户。如果你有这方面的需要,可以联系我们的技术客服琪琪(QQ:2395453054)。
短信服务的功能包括:
- 短信验证码服务(注册和找回密码等);
- 短信模板服务(需要你先设定短信模板,方便运营商审核,不支持法律禁止或者与政策相违背的短信服务);
- 可自定义短信后缀,如“尊敬的*,你购买的商品已经在快递中,请注意查收。【Bmob快递】”,其中
Bmob快递
就是短信后缀,可以替换为你的公司名称。
云端代码的调用
很多时候,单纯的前端代码是不能完成全部事情的,一些重要和复杂的业务逻辑还是希望能够在服务端中执行。比如:对比较大量的比赛数据进行排序,对某个网站进行资料采集和处理,获取用户的IP信息,等等。Bmob不仅提供了云端存储,还开放了云端的业务逻辑代码功能,也就是云端代码。
相关云端代码的使用,大家可以参考开发文档: http://docs.bmob.cn/cloudcode/developdoc/index.html?menukey=develop_doc&key=develop_cloudcode
云端代码的执行有多种方法:
- 定时任务(直接在Web管理后台中设定);
- RestApi调用(参考开发文档:http://docs.bmob.cn/restful/developdoc/index.html?menukey=developdoc&key=develop_restful#index云端代码);
- SDK调用。
其中,在SDK中调用云端代码的方法如下:
AsyncCustomEndpoints ace = new AsyncCustomEndpoints();
//第一个参数是上下文对象,第二个参数是云端代码的方法名称,第三个参数是上传到云端代码的参数列表(JSONObject cloudCodeParams),第四个参数是回调类
ace.callEndpoint.callEndpoint(MainActivity.this, cloudCodeName, params,
new CloudCodeListener() {
@Override
public void onSuccess(Object object) {
// TODO Auto-generated method stub
toast("云端usertest方法返回:" + object.toString());
}
@Override
public void onFailure(int code, String msg) {
// TODO Auto-generated method stub
toast("访问云端usertest方法失败:" + msg);
}
});
地理位置
Bmob允许用户根据地球的经度和纬度坐标进行基于地理位置的信息查询。通过在BmobObject的查询中添加一个BmobGeoPoint的对象查询,你就可以实现轻松查找出离当前用户最接近的信息或地点的功能。
创建地理位置对象
首先需要创建一个BmobGeoPoint对象。例如,创建一个东经116.39727786183357度,北纬39.913768382429105度的BmobGeoPoint对象:
BmobGeoPoint point = new BmobGeoPoint(116.39727786183357, 39.913768382429105);
查询地理位置信息
现在,你的数据表中有了一定的地理坐标对象的数据,这样可以测试找出最接近某个点的信息了。你可以使用BmobQuery对象的addWhereNear
方法来这样做:
BmobQuery<Person> bmobQuery = new BmobQuery<Person>();
bmobQuery.addWhereNear("gpsAdd", new BmobGeoPoint(112.934755, 24.52065));
bmobQuery.setLimit(10); //获取最接近用户地点的10条数据
bmobQuery.findObjects(this, new FindListener<Person>() {
@Override
public void onSuccess(List<Person> object) {
// TODO Auto-generated method stub
toast("查询成功:共" + object.size() + "条数据。");
}
@Override
public void onError(int code, String msg) {
// TODO Auto-generated method stub
toast("查询失败:" + msg);
}
});
要限制查询指定距离范围的数据可以使用addWhereWithinKilometers
、addWhereWithinMiles
或addWhereWithinRadians
方法。
要查询一个矩形范围内的信息可以使用addWhereWithinGeoBox
来实现:
BmobGeoPoint southwestOfSF = new BmobGeoPoint(116.10675, 39.711669);
BmobGeoPoint northeastOfSF = new BmobGeoPoint(116.627623, 40.143687);
BmobQuery<Person> query = new BmobQuery<Person>();
query.addWhereWithinGeoBox("gpsAdd", southwestOfSF, northeastOfSF);
query.findObjects(this, new FindListener<Person>() {
@Override
public void onSuccess(List<Person> object) {
// TODO Auto-generated method stub
toast("查询成功:共" + object.size() + "条数据。");
}
@Override
public void onError(int code, String msg) {
// TODO Auto-generated method stub
toast("查询失败:" + msg);
}
});
注意事项 目前有几个需要注意的地方:
-
每个BmobObject数据对象中
只能
有一个BmobGeoPoint对象。 -
地理位置的点不能超过规定的范围。
纬度的范围
应该是在-90.0到90.0
之间。经度的范围
应该是在-180.0到180.0
之间。如果您添加的经纬度超出了以上范围,将导致程序错误。
自动更新组件
Bmob为大家提供了应用的自动更新组件,使用这个组件可以快速方便实现应用的自动升级功能。 详细的使用操作可以参考文档:http://docs.bmob.cn/android/autoupdate/index.html?menukey=otherdoc&key=autoupdate
希望对你有帮助。