平台常见问题

Bmob有哪些优势 1.在很大程度上加快了用户产品的开发速度;对后端的支持让用户有更多的时间关注用户体验方面的设计。 2.为用户节省了服务端人员的配备和服务器租借,节省了很多成本。 3.在游戏方面,Bmob云端数据库保存玩家游戏数据,操作非常简单,用Api可以直接操作云端数据库。


Bmob有后台介绍视频吗 官方视频教程地址:视频教程 感谢Bmob用户为我们的后台录制了视频。 视频地址:使用 Bmob 搭建我们的第一个后端云 APP 其它的基础视频:点击查看入门教程


Bmob支持多少用户同时在线存储查询 一个APP支持10w+读并发,5w+写并发


服务器端运行在什么环境下 - 北京BGP机房 - 杭州BGP机房 - 香港BGP机房


你们的平台稳定吗 Bmob采用南北双线,多路分流的方式,将服务器部署在国内外主流的大型服务器提供商中。部署时采用7层负载均衡技术,确保每个节点机房都能够承受大量的并发请求。而每个应用之间采用Docker容器虚拟化,确保应用之间的安全隔离性。自2013年7月创立至今,团队积累了大量的运维和服务经验,确保平台的稳定服务。


数据放在云端安全吗 1.首先,数据在传输过程中采用了requestId + timestamp + Application Key的一次性对称加密算法和服务端主动防御的技术,确保数据在传输过程中能够不被FiddlerWireshark等抓包工具恶意抓取进行分析破坏。 2.应用之间除采用Docker虚拟化之外,系统还定期/实时做了3级容灾备份,确保数据的可用性。 3.在软件架构层面,Bmob提供了应用层次、表层次、ACL、角色、IP白名单、签名等多种安全控制方式。如果你想更深入了解Bmob的安全架构,可以详细查看我们的数据安全文档


Bmob支持国外数据访问吗 根据用户反馈,东南亚跟北美那边的访问速度还是可以的。欧洲那边的话,就我们的数据来看那边的访问量不是很高,但是可以访问。


你们支持什么平台 1.Android、iOS和WP三种主流的移动操作系统平台 2.Cocos2d-x和Unity两种主流的游戏引擎 3.Js支持HTML5移动开发 4.C#、php、Java支持PC端开发 5.REST API开放API接口(可使用任何语言开发)


不同SDK的数据是否打通 当然!本质上,所有的SDK都是基于REST API开发,数据是完全打通的。


我想迁移数据到Bmob,但是user表如何迁移呢 调用restapi的注册接口来插入数据就行


Bmob怎么用做HTML5的数据管理后台 你可以用js sdk来开发对应的html5页面,开发好之后联系我们客服,我们帮你把h5页面放到你的bmob子域名中去,给用户访问。


如何在bmob后端构建代码来获取融云的token 参考代码如下:

function onRequest(request, response, modules) {
    var userId = request.body.userId;
    var name = request.body.name;
    var portraitUri = request.body.portraitUri;
    var appKey = "";
    var appSecret = "";
    var random = Math.ceil(Math.random()*10000);
    var timestamp = Date.now();
    var before = appSecret + random + timestamp;
    var signature = modules.oCrypto.createHash('sha1').update(before).digest('hex');
    var http = modules.oHttp;
    var bodyStr = "userId=" + userId + "&name=" + name + "&portraitUri=" + portraitUri;
    var options = {
        "url": "http://api.cn.ronghub.com/user/getToken.json",
        "headers": {
            'app-key': appKey,
            'content-type': 'application/x-www-form-urlencoded',
            'nonce': random,
            'signature': signature,
            'timestamp': timestamp
        },
         "body":bodyStr
    };
    http.post(options,function(err,res,body){
        response.send(body);
    })
}

如何联系Bmob技术和商务 技术客服QQ:2093289624 商务QQ:2499654572 商务合作邮件:partner@bmobapp.com 技术沙龙邮件:event@bmobapp.com

Web开发者后台相关问题

如何在Web后台上传文件 Bmob提供了一种非常简单的文件上传的方法:

1.在Web后台中点击进入应用程序的控制面板中,如下图所示,选择需要用到文件的表,然后点击“添加一列”按钮,这时,弹出一个“添加新的表字段”的对话框。在这个对话框中,请输入字段名称,选择字段类型(注意:请选择File类型)。

2.现在,你就可以快速上传文件了:点击“添加一行”按钮,在File字段中点击“Upload File”就可以直接上传文件。如下图所示。如果想要上传更多的文件,可以重复第二步操作。


为什么导入CSV数据之后是乱码 请先将导入的数据编码转换为“UTF-8无BOM格式编码”之后再上传(转换为UTF-8编码的一个简单方法是:用Notepad++打开要导入的CSV文件,然后点击“格式->以UTF-8无BOM格式编码”菜单)。


为什么导出的CSV数据显示乱码 导出的文件请以“UTF-8无BOM格式编码”格式打开查看(可使用Notepad++打开CSV文件,然后点击“格式->以UTF-8无BOM格式编码”菜单),如果用excel直接打开可能出现中文乱码!


能提供一个CSV文件参考下吗 点击这里下载CSV文件模版

使用方法:Web后台->创建应用->创建表->导入数据->选择这个CSV文件


支持导出哪些类型的数据 支持这几种类型:'string', 'number', 'boolean', 'date', 'geopoint', 'array', 'object'


能直接在Web后台上传文件吗 可以,先在表中创建需要File类型的字段,然后新增一条记录就可以直接在Web端上传文件了。


导出数据表中的数据时可以自定义字段吗 可以的。开发者后台->数据浏览->更多->导出数据,可以选择导出需要的列。


能通过在控制台添加Relation的数据吗 可以,你可以点击relation字段,进去之后添加数据


如何获取_User表中的password Bmob没有提供直接获取密码的方法。如果直接可以获取密码的话,会存在安全隐患的。如果非要这样做,你可以新增一个字段,记录明文的密码。


Bmob中支持的String最大容量是多少 4M


能不能设置主键 可以,存在重复值会留下最早创建的记录,其它的删除。


创建了数据库,可以在后台直接添加数据吗 可以


我想在eclipse用Java web开发,使用struts2框架,然后后台数据库用bmob可以实现吗,需要下载什么东西 可以使用java sdk或者自己封装,通过https调用REST API接口


web端上传文件最大支持多少 控制台上传的文件最大为50M


新建一张表添加字段为Relation,只能重新添加数据吗 Web操作是这样的,但你可以用SDK,通过代码来实现数据的关联。


后台能不能支持批量上传文件? 不支持,可以自己编写脚本完成。


http请求如何访问Bmob 可以使用REST API接口进行访问。


ie8下引用 bmob-min.js 出现 “缺少标识符、字符串或数字” 错误 ie8不支持html5


angularJS如何与bmob配合使用 可以使用我们的JS SDK或者是使用angularJS的网络请求使用REST API接口进行请求


登录问题 能否实现只有通过验证的用户才能登 登陆成功之后,你再获取当前的登陆信息,判断这个verified字段是否为true,这样就可以实现你的想法了。


Bmob可以做微信公众平台的数据后台么 可以


数据导出不带objectid 字段吗 这个问题我们持续跟进,因为我们无法保证objectId不被用户修改,所以大家开发的时候就没有支持导出objectId了,之后看看怎么解决这个问题。


请问服务器上的表名和列名可以修改吗? 不能修改,考虑发布后的APP会由于修改表名和列名而造成无法使用的问题。开发过程中可以通过删除再创建达到目的。


可以在PC端写tool来操作服务器数据? 可以,使用REST API接口


API请求数是实时统计更新的吗? 不是的,API请求数一天统计一次,每天凌晨3点进行统计。

数据服务常见问题

Bmob怎么设计赞和踩功能? 利用原子计数器 很多应用可能会有计数器功能的需求,比如文章点赞的功能,如果大量用户并发操作,用普通的更新方法操作的话,会存在数据不一致的情况。 详情请查看对应平台的原子计数器章节。


支持同步数据上传吗 不支持阻塞主线程同步上传数据的方法!


SDK请求时占用内存大吗 如果只是数据服务的话,占用内存非常小。如果涉及图片服务,需要视图片大小而定内存占用情况。


文件能不能使用批量操作 可以


查询单条数据的时候,只能通过objectId来查询么? 如果确定是只有一个的,条件查询也可以。


注册和登录的流程是怎样开发的 注册成功之后,服务器会返回sessionToken(标识用户登录成功的会话信息)给BmobUser对象,这时即可立即显示登录后台的界面,同步在后台调用登录接口进行登录操作。


登录踢人、改密码踢人相关 一处登录其他地方下线以及改密码的问题请看如下伪代码:


Bmob数据库的pointer和我自己使用外建字段的区别? pointer的好处是可以在查询的时候一并把关联的记录也查询下来,不需要二次查询。让查询的速度更快

Android平台

对象

为什么我修改表中的某个Number类型的字段,其他Number类型的都变为0呢? 继承自BmobObject的类不要用int类型,用Integer。


定义类名必须和表中的名一致? 类名和表名一致,表内字段名和类变量名一致。


插入一条数据之后怎么获得该数据的id

GameScore gameScore = new GameScore();
//注意:不能调用gameScore.setObjectId("")方法
gameScore.setPlayerName("比目");
gameScore.setScore(89);
gameScore.setIsPay(false);
gameScore.save(mContext, new SaveListener() {

@Override
public void onSuccess() {
    toast("添加数据成功,返回objectId为:"+gameScore.getObjectId() + ”,数据在服务端的创建时间为:“ + gameScore.getCreatedAt());
}

@Override
public void onFailure(int code, String arg0) {
    // 添加失败
}
});

请看代码,成功后gameScore使用getObjectId()就可以获取objectId了。


success方法中获取的数据,用全局变量接收,但是在方法外就接受不到,变量为空 请先理解同步和异步的概念,回调中的onsuccess是异步方法,是不能用全局变量接收的,可以直接在onsuccess方法中做ui层面的更新


缓存路径能指定吗? 不可以


我在User表中增加了一个Number类型的字段,设置为以1自增,但几天过去了,里面的值并未自动增加,这个自增是怎样自增的,还要去哪里设置吗? 添加字段的时候选择num类型,有一个自增的checkbox和初始值的input,填一下就可以了


场景是多个客户端共同操作同一个数据表,更新该表的一个字段的值,如何做到一个客户端更新时锁定该数据表,操作结束时解锁? 目前没有该功能,只有Number类型可以使用原子计算器达到该效果


一次查询多条数据 算是调用了几次API? 一次调用算一次


请问每条数据的objectId都是唯一的吗,我的意思是,假设有个user表,有userName和level两个属性。如果两个对象的这两个属性都相同,其objectId是否就相同? objectId是每一条数据的唯一标示,不会出现重复的。


String 数据类型最大可支持多大数据? 最大为16M


求问怎么获取上传数据后生成的objectid 保存数据成功后,你的BmobObject对象就有objectId了的。 或者你按条件查询得到的数据对象中也是包含objectId的。


数据查询必须要objectId吗?在用户数据表中,在无法获取用户objectId的情况下,如何查询一个用户是否存在,是否可以通过其他字段查询? 单条查询必须使用ObjectId,多条查询时可以添加条件来进行查询。


查询

查询成功,但是list只能在onSuccess方法中使用,如何在本类中的其他地方使用? 网路请求都是异步独立线程的,你用handler把数据传递出来就可以。


如果不知道objectId,是否可以通过表中的元素获得数据? 添加数据的时候,onSuccess中可以得到objectId。也可以通过条件查询得到对应的objectId的。


在Activity关闭的时候如何动态关闭查询? 查询都是一次性的,并不需要取消


bmob怎么查询一列数据并合并相同数据? 可以使用统计查询中的groupby


bmob的数据库操作方法save insert这些都有开线程吗 bmob sdk提供的操作都是在线程中运行的,对外都是提供异步的回调方法,其回调方法,比如onsuccess和onFailure等是可以再UI线程中运行的,开发者不需要额外再开线程。


Bmob查询数据结束标志 在查询的回调方法中的onSuccess或onFailure触发时都是代表这个查询结束。


Bmob能否进行多表查询? 无法用一条语句查多张表,只能单独一个一个查


怎么设置缓存 让缓存数据在listView显示 可以使用缓存查询,具体可以查看官方文档


怎么通过BmobUser的一个属性列来获取其他列的信息 使用bmob的查询功能,查询Username 等于名称的用户信息即可,使用的是addWhereEqualTo方法


我的应用想只查询最新上传的一组数据,请问该如何操作呢 可以根据时间来设置条件,再进行查询


查询中findListener中的onerror方法不执行,两次测试均是数据库无该数据的,但是程序均不执行onerror方法 没有数据不代表查询出错,当没有数据符合你的查询条件时,就会返回空,此时还是执行onSuccess的


想问问查询的时候排序有多个关键字怎么解决? 数据服务的文档中有的,在开发文档的查询数据->查询条件->排序那里: **

排序

对应数据的排序,如数字或字符串,你可以使用升序或降序的方式来控制查询数据的结果顺序:

// 根据score字段升序显示数据 query.order("score"); // 根据score字段降序显示数据 query.order("-score"); // 多个排序字段可以用(,)号分隔 query.order("-score,createdAt"); 说明:多个字段排序时,先按第一个字段进行排序,再按第二个字段进行排序,依次进行。


数据关联

我有个Relation字段,想用它来记录喜欢这篇文章的用户,我该怎么添加里面的数据呢? 这个问题请看 数据关联 相关文档。


Relation字段 能否像pointer一样在查询的时候一并把关联的记录也查询下来,不需要二次查询 目前并没有这个功能,建议使用pointer


activity是一个表,里面有一个BmobPointer org指向BmobUser,activity.getOrg.getObjectId总是为空呢? 查询的时候应该没有用includ查询进去


查询数据时,表中的一个字段是pointer字段,如何将这个pointer字段的一个属性作为查询匹配条件?

BmobQuery<Comment> query = new BmobQuery<Comment>();
BmobQuery<Post> innerQuery = new BmobQuery<Post>();
innerQuery.addWhereExists("image", true);
// 第一个参数为评论表中的帖子字段名post
// 第二个参数为Post字段的表名,也可以直接用"Post"字符串的形式
// 第三个参数为内部查询条件
query.addWhereMatchesQuery("post", "Post", innerQuery);
query.findObjects(this, new FindListener<Comment>() {
@Override
public void onSuccess(List<Comment> object) {
    // TODO Auto-generated method stub
    toast("查询成功:");
}
@Override
public void onError(int code, String msg) {
    // TODO Auto-generated method stub
    toast("查询失败:"+msg);
}
});

如上,就是使用内部查询就可以实现你的需求了,只需要将查询条件和表名换成你需要的就可以了~


如果一个用户要收藏一个产品应该怎么定义对象 可以使用pointer类型


删除关联关系 我现在有评论类如下:

public class Comment extends BmobObject {
private String comment;
private Found found;
private Lost lost;
private MyUser user;
}

如果我想删除Lost类或者Found类的某条数据 其对应的Comment会被同时删除吗? 如果不能应该怎么实现同时删除? 不能同时删除,对于不同数据表的数据只能分别执行删除操作。


** 查询时 include 两个Pointer字段后会把前一个的数据冲掉 对表 AaaaEntity 查询时 include 两个Pointer字段后会把前一个的数据冲掉,如:

bmobQuery.include("userAuthor");
bmobQuery.include("xxxxEntity");

则:
aaaaEntity.getUserAuthor.getName()返回空

如果去掉后一行
bmobQuery.include("userAuthor");
//bmobQuery.include("xxxxEntity");
或
移到后面:
bmobQuery.include("xxxxEntity");
bmobQuery.include("userAuthor");

aaaaEntity.getUserAuthor.getName() 就能正常返回值

include的用法在文档里面已经说明了的(http://doc.bmobapp.com/data/android/develop_doc/),想include多个就这样用:query.include("x1,x2");


用户管理

打开了邮箱验证功能,注册成功后未验证也能登录成功? Bmob SDK中,邮箱的验证和用户的注册登录是异步的关系,也就是说,即使用户没有点击邮箱验证功能,也是一样可以登录成功的。如果需要限制用户的登录或者只能查看到登录后的部分功能,可以使用BmobUser.getEmailVerified


Bmob如何实现用户登录之后获取数据读写权限,以及如何实现登出操作的? 用户登录之后,我们会把获取到的用户信息保存在本地文件中,你可以通过BmobUser.getCurrentUser方法获取对应的值,当调用 logout方法之后,这些缓存的数据就会清除。如果不调用logout方法,下次重新打开这个应用,还是可以通过BmobUser.getCurrentUser方法获得上次登陆的用户信息,从而判断是否登陆过。


清除缓存用户对象只是对本地清除,没有真正向服务端注销登录的账号,请问是怎么去处理这个问题 BmobSDK中的BmobUser登录,只是登录成功后缓存用户信息到本地。服务端并没有记录用户的登录状态,所以退出登录并不需要向服务器注销。


Bmob支持第三方登录吗?怎么做? 支持,官方的文档上有介绍。


为什么邮箱验证还没去验证却可以登录 是可以的,邮箱验证那个字段需要开发者根据需求自行决定要不要使用


登录时异常退出MyUser declares multiple JSON fields named mobilePhoneNumber MyUser定义了一个Bmob的系统字段呀,你可以看看用户管理那里的文档,里面有介绍说明BmobUser的特有属性,以下摘抄自文档:

BmobUser除了从BmobObject继承的属性外,还有几个特定的属性: username: 用户的用户名(必需)。 password: 用户的密码(必需)。 email: 用户的电子邮件地址(可选)。 emailVerified:邮箱认证状态(可选)。 mobilePhoneNumber:手机号码(可选)。 mobilePhoneNumberVerified:手机号码的认证状态(可选)。


第三方登录之后该怎么获得User的objectId呢? 登陆成功之后,系统就会给你生成一个objectId的,你正常的通过 user.getObjectId() 就可以得到了


如何修改user表中其他用户的数据 直接在web控制台修改或者使用masterkey


修改数据提示User cannot be altered without sessionToken Error. 这种情况一般都是没有进行用户登录就对用户信息进行更新导致的


更新用户update时失败,9012错误 9012是context is null,没传上下文对象


用了getobjectId方法为什么还是显示objectId cant't be empty。

public void setsj(View v){
final User setUser = new User();
List<String> a=new ArrayList<String>();
a.add("5cd431f659");
a.add("4c2184e8ea");
setUser.setFriends(a);
setUser.update(this, setUser.getObjectId(), new UpdateListener() {

    @Override
    public void onSuccess() {
        // TODO Auto-generated method stub
        Log.i("bmob", "更新成功:");
        toast("更新成功");
    }

    @Override
    public void onFailure(int code, String msg) {
        // TODO Auto-generated method stub
        Log.i("bmob","更新失败:"+msg);
        toast("更新失败");
    }
});
}
// 这段代码是通过点击一个button然后更新我写好的数据,可一直显示更新失败,查看logcat显示objectId cant't be empty。可是我有用setUser.getObjectId()啊,为什么还是说ID为空?

你的user并不是通过登录得到的,而是自己生成的,并没有objectid,需要从服务器上获取的数据才有objectid


更新了用户信息后 服务器都更新了数据 但是本地缓存用户没有更新 更新用户信息后需要从新登陆,本地用户信息才会更新。


登录后在个人资料中上传头像在用户表,并且要头像和用户要对应。 上传图片成功后,将BmobFile对象更新到当前用户的头像字段中即可。


在数据下_User 下把email添加后为啥 emailVerified Boolean 这一栏显示的是false 是什么原因呢 该字段需要注册用户点击了验证邮件才会主动设置为true


数据实时功能

如何实现Bmob服务端向Android应用发送实时通知?如某个数据过高需要提醒APP用户 以使用实时数据监听功能来实现


登录之后,怎么获取用户的信息并显示出来 登录成功之后就可以通过getCurrentUser方法获取本地用户信息


ACL和角色

例如我已经有一个角色叫Chief,我怎么用代码给它添加成员?直接new BmobRole("Chief")然后再getUsers().add然后再save? 但这个代码不应该是新建一个角色吗?如果是用BmobQuery获取的话获取失败,返回101错误 A:

//创建HR和Cashier两个用户角色(这里为了举例BmobRole的使用,将这段代码写在这里,正常情况下放在员工管理界面会更合适)
BmobRole hr = new BmobRole("HR");
BmobRole cashier = new BmobRole("Cashier");

//将hr_zhang和hr_luo归属到hr角色中
hr.getUsers().add(hr_zhang);
hr.getUsers().add(hr_luo);
//保存到云端角色表中(web端可以查看Role表)
hr.save(this);

//将cashier_xie归属到cashier角色中
cashier.getUsers().add(cashier_xie);
//保存到云端角色表中(web端可以查看Role表)
cashier.save(this);

是否可以针一行数据的某一个字段控制读写权限 ? 是否可以针一行数据的某一个字段控制读写权限 ?例如,UserA 发了一条说说,这条说说只有UserA可以写,其它用户可以读,但是其中有一个点赞计数字段,所有用户都可以对这条说说点赞,点赞后,这个点赞计数字段值就加1。 ** 没有针对一个字段控制读写的,如果需要,可以将这些需要控制的另外建一个表,使用pointer字段指向该表来获取


地理位置

基于地理位置的查询是根据什么排序的 是按照距离从近到远来进行排序的


自动更新

自动更新生成的表和文档上的不一致 没有调用initAppversion方法


自动更新,如何实现只获取是否有新版本,不弹出对话框。 目前SDK中暂没有这个功能,后续版本会考虑添加


文件

Bmob如何实现储存和传输图片? 通过BmobFile类上传图片,上传成功之后,会返回一个BmobFile,你从这个BmobFile可以得到文件上传之后的url,把这个url保存到你的对应表中。下载的时候,先查询数据表得到url,然后下载这个图片就可以了。


Bmob如何将整批图片下载在本地呢? 首先先查询,得到全部数据,从而得到图片的url列表,再用一些下载文件的代码把图片批量下载下来。


BmobFile类最多可以保存多少张图片? BmobFile类只能保存一张图片,你可以用BmobFile上传图片,得到图片的url,保存的字段用string或者array。


怎么让表的某个字段包含多张图片? 用array来存储文件的url


能把json文件放在bmob里,并配置一个专门的地址,然后APP通过这路径下载或者读取吗? 用文件服务实现即可。


怎么通过objectID获得文件的下载路径?

// 根据objectId查询数据
BmobQuery<GameScore> query = new BmobQuery<GameScore>();
query.getObject(this, "a203eba875", new GetListener<GameScore>() {

@Override
public void onSuccess(GameScore object) {
// TODO Auto-generated method stub
toast("查询成功:");
//获得playerName的信息
object.getPlayerName();
//获得数据的objectId信息
object.getObjectId();
//获得createdAt数据创建时间(注意是:createdAt,不是createAt)
object.getCreatedAt();

// 假设GameScore对象中有一列是BmobFile类型的icon
// 如下取出查询到的数据中的BmobFile类型,得到下载地址
BmobFile icon = object.getIcon();
String url = icon.getFileUrl();

}

@Override
public void onFailure(int code, String arg0) {
// TODO Auto-generated method stub
toast("查询失败:"+arg0);
}

});


为什么最新的SDK里面的BmobFile没有loadImageThumbnail方法 最新的SDK已经将图像处理的接口去掉了,需要用户自己在本地处理


怎么去在批量上完图片之后,取得对应的缩略图呢? 缩略图功能已经取消,请在客户端进行图片的处理


9015your uploading task is canceled. 安卓文件上传无响应 调用了bmobfile.cancel()方法会出错该提示。


表中有一列数据为BmobFile类型 ,数据为.TXT格式 ,怎么将文件下载下来 查询这一行数据,在结果中从这一列对应的BmobFile对象中用getFileUrl()得到文件的地址,再进行下载。


listview显示Bmob上的图片怎么实现? 图片上传后会返回相应url给客户端的,可以在表中,在需要显示的时候利用url将图片下载下来进行显示


我通过软件上传了文件到bmob后端云。怎么获得该文件url。 上传后会有url返回


bmob可以通过客户端下载文件吗? 上传到Bmob之后就会返回文件的地址,至于怎么下载,由你来决定。


为什么我上传的文件(图片)已经删除了,但是通过url仍然可以访问到图片呢? CDN缓存的,过一段时间就会完全删除


其它问题

Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; Error:Execution failed for task ':app:transformClassesWithDexForDebug'. Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; Error:Execution failed for task ':app:transformClassesWithDexForDebug'. 这是重复导包造成的,你用的v4和v7包重复了,你需要去掉报错的那个模块


我使用BmobUser.login接口,返回onFailure的参数code分别对应什么情况?有说明文档么? 错误码列表


App_ID is not setted出现什么原因? 初始化BmobSDK时需要传入你自己应用的ApplicationID


Duplicate files copied in APK META-INF/maven/com.squareup.okhttp/okhttp/pom.xml 导了重复的包


bomb_AndroidSDK_V3.4.7_0518 中文乱码 SDK的demo的编码格式是gbk,换下格式就行


android Bmobquery 开两个线程 分别查两个不一样的表,返回数据有问题 sdk中的很多方法本身就是在子线程中执行的,开发者没必要开子线程(创建子线程和线程池管理SDK都封装好了)。


查询出了回调函数,List就变空了 请先理解下同步和异步的概念,bmob目前的接口提供的都是异步回调函数,建议在onsucess/onFailure中进行ui操作


Bmob的各个SDK可以使用Application的Context来初始化吗 可以的。最好是用Application的Context来初始化。


bmob的jar包和volley包冲突怎么回事 bmob的jar里面包含了volley,无需再次导入


移动端和WEB端能用BMOB作为云端,实现数据共享么? 可以的,使用同一个app id来进行操作即可


真机运行时控制台输出 Error:warning: Ignoring InnerClasses attribute for an anonymous inner class 可以试试在你的app的build.gradle的android标签下添加如下:

lintOptions {
ignoreWarnings true
}

把应用装到手机很慢,一直在Gradle Build 如果你确定你的应用所需的jar包已经下载完了,可以将gradle设置成离线模式


BmobSDK能导入源码开发编译吗 BmobSDK目前并未开源


3.4.7 sdk java.lang.UnsatisfiedLinkError 怎么破 java.lang.UnsatisfiedLinkError: Couldn't load bmob from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/top.kiuber.sharemy-1.apk"],nativeLibraryDirectories=[/data/app-lib/top.kiuber.sharemy-1, /vendor/lib, /system/lib]]]: findLibrary returned null 详情移步到博客http://www.kiuber.top/2016/05/24/android-studio-add-so/ 问题已经被攻克,原因是so库文件未导入。 解决方法:在project视图下,在main文件夹内新建jniLibs文件夹,把对应so库文件夹及文件复制到jniLibs文件内,然后在MainActivity.java文件


邮箱验证用哪个SDK 使用数据服务SDK即可


Android studio连接Bmob时报错

java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-support-annotations-23.4.0_eff36cb3dd5776bcc7dfe63d3c4af3d7d0b02909-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-okio-1.7.0_16f89fb230458d29c309937f6ab11ce75258c504-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-okhttp-3.2.0_8f755226a0726d7921fa90d83c674c16a1bd0ee3-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-internal_impl-23.4.0_2c4831db21059d6465959fb999a28d5a6fe10599-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-com.android.support-support-vector-drawable-23.4.0_eb28b4ae1a0615e1130648d3b547db30e6e89fd0-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-com.android.support-support-v4-23.4.0_c594c96eba293bbb78cda22a0502566240fb4409-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-com.android.support-appcompat-v7-23.4.0_39e8b9d21669eb9eb3df764bcd49eb0facc75e07-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-com.android.support-animated-vector-drawable-23.4.0_613291d2784b41eebf3800d518847e90b2efa55b-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-bmob-sdk-3.4.7_3bb8e20fe85419a97fea506c0c8a8a8fe18f45d5-classes.dex", dex file "/data/data/com.example.administrator.bmob2/files/instant-run/dex/slice-bmob-push-0.9_35e71e7e49d7888481221634e134fec14816f381-classes.dex"],nativeLibraryDirectories=[/data/app/com.example.administrator.bmob2-2/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libbmob.so

使用aar格式的SDK,这样就不用导入so库


sdk怎么和Retrofit这些库一起使用呢 出现这个问题的原因是retrofit依赖的okhttp和sdk的远程aar包中的okhttp重复导致的,将会导致编译不过,解决方式有: 1 下载Retrofit的jar包,采用本地依赖的方式; 2 compile Retrofit的配置加下exclude,把重复的okhttp除去,如下:

implementation ('com.squareup.retrofit2:retrofit:2.1.0'){
        exclude group : 'com.squareup.okhttp3'
    }

iOS平台

对象

查询表内容时不能获取到objectId的值,通过[obj objectForKey:@"objectId"]获取到的是空值,其他字段是正常的 BmobObject有一些基本属性,objectId,createdAt,updatedAt等,直接获取就可以了,如bmobObject.objectId。


查询时可以设置只从本地缓存获取,但是创建和保存时是否能够只保存到本地缓存呢? 只有查询有缓存,其它操作没有缓存。


iOS 怎么获取到创建日期啊 NSLog(@"%@",[NSString stringWithFormat:@"%@", Myobject.createdAt]);


bmob 怎样用代码写唯一键 唯一键只能在控制台设置


我的bmob对象中有一个属性是boolean属性,请问在ios代码中怎么设置它? BOOL cheatMode = [[object objectForKey:@"cheatMode"] boolValue]; isStudent = [NSNumber numberWithBool:NO]; 用以上的方法来设置。


ios开发初始化一个对象指定一个id但是保存成功之后却不再是这个id了 objectId系统生成的,并不是你来生成的,你用的下面这个方法,是用来构造已经存在的对象,然后对该对象进行更新删除操作的。

BmobObject *gameScore = [BmobObject objectWithoutDatatWithClassName:@"GameScore" objectId:@"a"];

原子计数器怎么用 查看开发文档原子计算器小节。


在iOS中 在代码中如何创建一个空表 只包含各列的属性 而不创建具体的一条数据。 该需求无法可以通过在web控制台添加列来实现。


如何删除表中所有的数据?(只知道表名的情况下) 先查询该表所以数据,获得数据后遍历删除~


可不可以批量创建数据 可以。请查看开发文档批量数据操作小节


如何存储比较复杂的数据类型?比如数组里包含字典,字典里再包含数据 一般的数据类型使用使用JSON格式都可以存储的,可以多了解一下JSON格式


'Invalid type in JSON write (CLPlacemark)' CLPlacemark类型熟悉无法写入 对象类型属性是无法写入的


查询

iOS端集成 查询单条数据,只知道某个value的具体值,如何查询相应的该条数据的其他值? 使用多条查询并加上你的约束条件就可以了


iOS 查询条件是boolean 应该怎样设置? 类似于以下形式

[bquery whereKey:@"playerName" notEqualTo:[NSNumber numberWithBool:NO]];

我想让模糊查询的条件key为所关联的_User表中的username 怎么弄 你好,文档中有关于模糊查询的介绍查询


BmobQuery查询多条数据时,查询结果无法传出 查询是异步的,可以采用通知机制来传递返回的数据,或者是把操作逻辑放在block里


user表查询返回的没有自定义列的数据,只有username自带属性 注意使用objectForKey来读取数据,而不是valueForKey。


iOS 如何判断表内存在某列存在某项值 然后作为类方法返回值返回呢? 查看以下文档中的“列值是否存在”小节开发文档


支持一次可以查找多张结构类似的表吗 不支持


数组

IOS 如何 查询 数组

BmobQuery   *bquery = [BmobQuery queryWithClassName:@"GameScore"];
//查找GameScore表所有数据
[bquery findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error) {
    for (BmobObject *obj in array) {
        //打印array
        NSLog(@"obj.array = %@", [obj objectForKey:@"array"]);
}
}];

删除array数据类型的一个元素 开发文档数组小节


数据关联

怎么获取relation中的数据? 假设你有一个帖子(Post)类和一个系统默认的用户(User)类, 而每一个帖子(Post)都可以被不同的用户(User)所喜欢。 如果帖子(Post)类下面有一个Key名为likes,且是 Relation 类型, 存储了喜欢这个帖子(Post)的用户(User)。那么你可以找到喜欢过同一个指定的帖子(Post)的所有用户:

BmobQuery *bquery = [BmobQuery queryForUser];
[bquery orderByDescending:@"updatedAt"];
BmobObject *obj = [BmobObject objectWithoutDatatWithClassName:@"Post" objectId:@"a1419df47a"];
[bquery whereObjectKey:@"likes" relatedTo:obj];
[bquery findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error) {
}];

如何查询多个关联关系 如果查询多个关联关系,可以使用以下方法,使用逗号(,)操作来使查询中包含多个属性

[bquery includeKey:@"column1,column2,..."];

iOS-如何判断列值Pointer类型里的数据不为空 可以用下面的方法来实现~

//设置查询中该字段是有值的结果
-(void)whereKeyExists:(NSString *)key;
//设置查询中该字段是没有值的结果
-(void)whereKeyDoesNotExist:(NSString *)key;

Relation关系,如何进行逆向查询? 基于User可以点赞Post,我现在在Post表中建立了一个Relation关系,指向User;借此我可以知道,喜欢了某一篇Post的User都有谁。 现在我还需要知道某一个User喜欢了哪些Post,也就是利用User的ObjectID查询Post表的内容。貌似Bmob的Relation关系与数据库里面的多对多关系(借用建立中间表实现多对多)不同,不知道该怎样实现我所要的查询? 这个没法直接逆向查询的,你可以使用pointer来完成你的需求,重新建立一个表,两个字段,一个指向点赞者,一个指向点赞人


iOS中怎样同时查询两张表,做到获取两张表的内容,不是一张表的内容 可以采用pointer类型,使得一张表指向另一张表,再使用include接口可以来获得


用户管理

注册的时候如何给User表自定义的字段插值? 有个BmobUser类用来操作用户相关的数据

    BmobUser *bUser = [[BmobUser alloc] init];
    [bUser setUserName:@"小明"];
    [bUser setPassword:@"123456"];
    //age 为自定义
    [bUser setObject:@18 forKey:@"age"];
    [bUser signUpInBackground];

打开了邮箱验证功能,注册成功后未验证也能登录成功? Bmob SDK中,邮箱的验证和用户的注册登录是异步的关系,也就是说,即使用户没有点击邮箱验证功能,也是一样可以登录成功的。如果需要限制用户的登录或者只能查看到登录后的部分功能,可以使用[[[BmobUser getCurrentUser] objectForKey:@"emailVerified"] boolValue]方法。


Bomb邮箱认证是只需要开启邮箱认证就可以了吗?里面的内容要不要设置啊,比如发送给谁,邮箱地址什么的? 开启就可以了使用了。内容可以不用设置,发送给谁、邮箱地址是什么是由SDK注册的时候用户填写的。


ios注册的时候如何给User表自定义的字段插值 有个BmobUser类用来操作用户相关的数据

BmobUser *bUser = [[BmobUser alloc] init];
[bUser setUserName:@"小明"];
[bUser setPassword:@"123456"];
//age 为自定义
[bUser setObject:@18 forKey:@"age"];
[bUser signUpInBackground];

第三方用户授权注册登录后,如何绑定手机号呢? 可以使用该绑定手机号的功能,请查看开发文档手机号相关功能小节


退出登录接口 [BmobUser logout];


手机号是用户名,在忘记密码这一块,用什么来方法来查询用户名?用什么回调方法去判断用户是否已经注册 可以直接使用条件查询来判断是否已经存在该用户


用第三方登录时,怎么将用户头像存入BmobUser中 再建一个字段,将头像url存进去


我做了两个页面(viewcontroller),在注册页面用[BmobUser setUsername:]等方法保存了用户账号密码的信息,成功之后使用[BmobUser loginWithUsernameInBackground:,]这个方法保存后台,但是我在另一个页面,登录页面提取数据进行账号密码对比验证的时候,使用[BmobUser getCurrentUser]提取当前的账号密码,发现他的账号内容保存了下来,而密码的内容是NULL。不知道这是为什么 ** 密码是不能提取的,登录要用文档给定的接口


ios中 ,怎么判断用户注册或是登陆的时候 处于联网状态还是非联网状态 可以使用网络状态监听,这方面的资料有很多的~http://www.cnblogs.com/wendingding/p/3950114.html


请问每次登录后都会缓存用户的信息,但是好像没有缓存密码,那怎么实现缓存登录,也就是下次自动登录。 密码是不会保存的,启动应用时直接使用下面代码判断用户是否已经登录

BmobUser *bUser = [BmobUser getCurrentObject];
if (bUser) {
//进行操作
}else{
//对象为空时,可打开用户注册界面
}
密码是不会保存的,启动应用时直接使用下面代码判断用户是否已经登录
BmobUser *bUser = [BmobUser getCurrentObject];
if (bUser) {
//进行操作
}else{
//对象为空时,可打开用户注册界面
}
密码是不会保存的,启动应用时直接使用下面代码判断用户是否已经登录
BmobUser *bUser = [BmobUser getCurrentObject];
if (bUser) {
//进行操作
}else{
//对象为空时,可打开用户注册界面
}

数据实时功能

客户端监控某个表或某一行数据,会使客户端电量或网络流量增加吗?如果表数据有变化时,是通过推送机制来通知客户端的吗? 不会消耗多少网络流量的,是用websocket机制来通知客户端,不是通过推送,也没有离线消息的概念,一旦socket连接关闭,就不会收到后续消息。


ACL和角色

如果每个用户都有写入权限,安全应该怎么做? 可以设置ACL,详情请查看文档开发文档ACL和角色小节


ios安全问题,如果每个用户都有写入权限,安全应该怎么做? 可以使用ACL来限制读写权限。


** 关于ACL安全控制的几个问题 1.在后台设置了某个表的权限为只读,那么app上调用setPublicWriteAccess,是不是对该表无效? 2.app上是否有acl的api改变表是只读还是acl控制? 3.下面代码是不是对该应用中所有表进行acl权限设置?

BmobACL *acl = [BmobACL ACL];
//设置所有人读权限为true
[acl setPublicReadAccess];
//设置所有人写权限为true
[acl setPublicWriteAccess];

如果只是对blog表权限设置,在上面的基础上加上blog.ACL= acl;即可?但是我觉得这样好像有点矛盾,因为如果前面的代码成立,那么后面的后面代码没有达到“只是对blog表”的权限修改的目标,反而到时所有表的权限都被修改了。 4.setPublicWriteAccess是对所有表的权限设置,有没有只针对某个表所有行的权限设置的api? 5.开发文档中的关于发表一篇不公开的日志的例子,我理解为是对表中都一条单独的数据进行acl权限控制,这种理解是否正确? 6.ACL能不能控制某个字段(也就是列)的访问权限? **

1.调用应该是有效的,这个你只需要简单测试一下就可以了。 2.除了只读后,其它情况都是acl控制。 3.不是对所有表进行设置,那个代码只是设置了权限,必须显示对某个表应用才行。 4.同3,并不是针对所有表进行设置。 5.是的 6.不能,只能控制表的访问。


文件

iOS上传文件只支持路径上传吗,不支持iOS的NSData或者image对象上传吗 支持路径和NSData上传,可以查看BmobFile的头文件,里面有相关注释


file字段中如何上传多张图片? 一个file字段只能保存一个图片文件,多个图片可以使用数组将图片url保存下来


File类型是视频文件,能不能在ios端直接通过File的地址播放视频呢? 支持


iOS 从相册获取到视频 然后如何上传 直接通过路径或者NSData都可以


上传视频失败 这种情况是初始化没有完成就开始进行请求导致的,可以监听kBmobInitSuccessNotification通知,监听到该事件后再上传即可


在ipv6下.无法获取到资源文件 先看看ipv6的环境是否设置正确设置方法,再看看相应的下载库是否支持ipv6。


1.69 SDK 文件服务更换为CDN上传是指什么?文档在哪里? 原接口不变,只是服务器换了,服务会更稳定的


地理位置

地理位置查询 返回的结果是已经排序的 是排序好的,由近到远的顺序。


想查询10KM内的所有用户,并且按用户的某个字段属性排序,应该怎么做呢?因为发现只要按地理位置设置了条件,不管排序条件怎么设,最终都是按距离远近进行排序的... 做不了的,有地理位置条件的时候都是按从近到远排序的。距离相同再按别的排序


其它问题

有iOS 点赞功能的demo吗? 有的,Bmob点赞案例 实现的用户注册、用户登录、发贴、显示所有帖子资料以及对帖子进行点赞的功能 。


请问有对应的swift开发方法吗? Swift项目中使用BmobSDK可以看这个文档:Swift项目中使用BmobSDK


支持什么编译器 Bmob完全支持iOS 64bit/32bit的真机和模拟器调试。


数据库中file字段无法导出吗? 暂时只支持7种基本类型的导出:字符串(String)、数字(Number)、布尔值(Boolean)、 数组(Array)、对象(Object)、日期(Date)和地理位置(GeoPoint)


iOS开发restAPI中条件查询如何拼接请求 写在url上面,可以先了解一下html中get和post的区别,get请求的参数都是写的url上的~


bmob有iOS国际化文件没有 国际化是需要你自己在本地做的,和Bmob无关。


出现错误"msg":"authorization has expired","code":40300006 应用太久没有请求导致的,先在控制台恢复一下应用数据就可以


等到查询成功得到结果后再执行下一步怎么办? 需要放在block中进行。


出现错误Error Domain=cn.bmob.www Code=20002 "connect failed!" UserInfo={NSLocalizedDescription=connect failed! 网络问题,连接失败了,请尝试更换网络再次进行连接。


The dependency BmobSDK is not used in any concrete target. 你好,应该是你的cocoapod升级了,新版本的需要指定下载的库给特定的target使用,如下,把CocoapodsDemo换成你的target名即可~

target “CocoapodsDemo” do
pod ‘BmobSDK’
end

想迁移一个app的某个表数据到另一个app,怎么实现 可以直接使用A应用的备份数据生成新应用提供给B应用使用,点击进入应用,设置-备份还原,选择最近一次备份生成新应用即可


怎样往一张表里面直接添加图片,不用代码 web上传


os 用户删除 tableView 某一个单元格的数据,我怎么拿到用户点击的 index.row 去找到该行数据相应的 objectId? 显示的时候是把bmobobject放在一个数组中显示,直接根据row找到对应的bmobobject,里面就有objectid


错误Error Domain=cn.bmob.www Code=100 "db stopped" UserInfo={NSLocalizedDescription=db stopped} 应用可能太久没使用被停止了,到控制台对应的应用的设置那里恢复一下数据


Cocoapod集成后打开报错,提示缺失库。 打开后缀xcworkspace的文件,而不是后缀xcodeproj 的文件


哪里可以看到错误码 错误代码列表

Cocos2d-X

BmobQuery查询 怎么查看返回的data? CCLOG("%s",(const char*)data);或者是BmobLog::bmob_log()


要添加头文件? 不是添加文件的问题,是你的SecondScene没有实现BmobSaveDelegate接口,你实现BmobSaveDelegate接口就好了.


bmob中的cocos2d-x怎么不提供静态和动态库!而且里面还存在多种编码格式!请提供一下bmob coocs2d-x的动态库和静态库。或告知相信解决办法。 目前暂不提供。

CSharp

为什么我调用支付应用无论是支付宝还是微信点击都没有反应呢(请教一下unity接支付) 目前暂不支持Unity支持


unity端 查询表,会出现失败情况 失败原因 Failed to connect to 自己备案域名 port 443: Timed out, and response content is UnityEngine.MonoBehaviour:print(Object) 提示连接超时,先检查一下网络状况。


unity不能缓存用户吗? c#没有进行用户缓存


Bmob能存放Unity的AssetBundle么 可以使用文件上传来存储~


如何通过SDK删除用户表_User的数据 可以通过调用REST API接口+master key来完成删除用户


C#SDK,使用Find功能,我自己封装一层查询的方法,想要获得bool的返回值,应该怎么实现 不能返回,只能使用回调,因为Find方法是异步执行的.


请问在c#sdk可以使用master key吗?还是说要自己重新写? 不可以直接使用的,只有REST API api可以使用master key,你可以使用C#的http请求api来调用REST API api


Bmob如何实现两张表的关联呢? 比如我需要将User表与Role表进行关联,登录用户后,系统可以通过User的帐号来获取与之相应的Role表里面的信息? 可以,用列的pointer或者relation类型,具体用法看文档


Unity可以使用短信验证么,为什么找不到API 可以使用Unity的网络访问接口,调用REST API来使用短信验证~


bmob sdk for unity3D 在unity3d5.3 下转il2cpp无法使用 用 unity3D 5.3 打il2cpp 转c++ 后会报错: Unsupported internal call for IL2CPP:DynamicMethod::create_dynamic_method - System.Reflection.Emit is not supported. 应该c++静态代码是不支持 System.Reflection.Emit 的反射类,能有其他解决方法吗? 这个目前还没有好的解决方法,JSON很多操作都用了反射~


unity3d bomb sdk 打包到IOS上.请求返回缺少404里面的数据. 升级u3d版本至5.3.2f以上。


怎么做点赞的用户唯一性,要做点赞,可以用原子计数器,但是无法知道是哪个用户点的赞,而且每个用户只能最多加一个赞,用Array来存用户objectid可以,但是存在多用户同时点赞相互覆盖对方的objectid的情况,请问有什么办法可以解决吗? 可以重新建立一张表,两个pointer字段一个指向点赞用户,一个指向被点赞的内容。


怎样把github上下载的unitysdk注入到unity project里面 官网的文档比较老没有同步更新。直接看下案例(接下来把文档整理下): https://github.com/bmob/bmob-demo-csharp/tree/master/examples/bmob-unity-demo libs路径: https://github.com/bmob/bmob-demo-csharp/tree/master/examples/bmob-unity-demo/Assets/libs


untiy 开发怎么集成周围的人功能,可以做这个功能吗 大概怎么个思路 有相关的文档吗? 可以采用地理位置来实现,我们有现成的api返回一定范围内的用户记录。


C# BmobRelation做粉丝和关注怎么做 看RoleTest这个例子,https://github.com/bmob/BmobSharp/blob/master/BmobTest/BmobTask.cs


unity5中,最新版的bmob什么地方可以输入Application ID? https://github.com/bmob/bmob-demo-csharp/tree/master/examples/bmob-unity-demo


unity下,我如何传递参数到云端代码,然后获取云端运行后的回调呢?

云端代码:
function onRequest(request, response, modules) {
var res = {"value": "just string..."} ;
response.end(JSON.stringify(res));
}

C#调用代码:

[TestMethod()]
public void EndpointParamAndStringTest()
{
var p = new Dictionary<String, Object>();

var future = Bmob.EndpointTaskAsync<Object>("testString", p);
FinishedCallback(future.Result, null);
}


bmob查询时记录返回值的表必须是自己新建的表吗?c#里不能用datatable吗? 返回值都是你创建的表,不一定是新的。这样C#才能映射到对应的object中去,让你对象化调用。


bmob使用指定列查询时会多出几种数据,分别是_type,,createdAt等。 是的,这些是默认的系统列,一定要有的。


1.unity里面必须使用BmobUnity Bmob = gameObject.GetComponent(); 来获取bmob对象吗 ?能不能 用C#DLL里面的 new方法呢?因为BmobUnity继承了mono所以不能new这个很麻烦,毕竟数据操作是模型层干的事情 2.在查找数据的时候,Main.Bmob.Find方法不在主线程 ,也没有回调,导致后面的代码在结果出来之前优先执行了。 3.以上两面我看c#的SDK完美解决了,可惜unity里面不能用c#的bmob.dll

1.不能用new的方式,bmob异步请求用了MonoBehaviour#StartCoroutine 2.没有回调??自己先查看下API。 3.Unity和C#不同的,Unity是一个封装的版本,需要兼容各个平台的东西。


C# sdk 只可以用Unity开发吗?visual c#可以用这SDK么? C# SDK可以用来开发Unity、visual c#,wp8这几类的程序。


unity中调用restapi方法分享

JavaScript

请问比目有TypeScript的前端sdk吗?主要是用在白鹭游戏引擎引擎里的。 这个暂时没有,有普通js的sdk


angularJs如何与bmob配合使用 一般这种情况需要将和Bmob的数据交互封装为一个service,从service中返回数据 基本的调用层次就是controller调用service,service调用Bmob bmobservice.js

app.service("bmobservice", function () {
//添加一个资源  Bmob对象在index中初始化或者在app.run中进行初始化
this.AddResource =function(resource){
    var ResourceInfo = Bmob.Object.extend("ResourceInfo");

    //创建对象
    var resourceInfo = new ResourceInfo();
    //为对象赋值
    resourceInfo.set("Title",resource.Title);
    resourceInfo.set("ResourceType",resource.ResourceType);
    resourceInfo.set("Target",resource.Target);

    //resourceInfo.save();
    var array = new Array();
    var SubResourceInfo = Bmob.Object.extend("SubResourceInfo");
    var subResourceInfo = new SubResourceInfo();
    subResourceInfo.set("Name",resource.SubResourceInfo[0].Name);
    subResourceInfo.set("Url",resource.SubResourceInfo[0].Url);
    resourceInfo.set("SubResource",subResourceInfo);
    resourceInfo.save();
}
});

testcontroller.js

app.controller('testcontroller',function($scope,$resource,bmobservice){
        $scope.addresource = function(){
            var resource = {
                "Title":"test",
                "ResourceType":0,
                "Target":"test",
                "SubResourceInfo":[{
                    "Url":"testurl",
                    "Name":"testname"
                }]
            }
            bmobservice.AddResource(resource);
        }

没有客户端请求的情况下服务端能主动向客户端发送数据吗? 不能


有没有比较数据表中内容相似度的方法,例如 我表里面有 一个组数据 name: 你好中国人, 我要往里面房数据但是如果我的数据为 name:中国人 ,就不放进去了。。判断两者为同一数据 这种定制化的需求需要开发者自行实现。


有没有办法可以获取password 为安全考虑,我们不对外提供获取password字段值的功能。


Javascript的bmob的数据处理都是异步的,如何设置为同步 如果是在nodejs中,可使用async这个同步类库


如何在node.js的代码中调用bmob 用bmob的nodejs模块


JS如果想产生多行数据保存到表中怎么办? 一次只能保存一条数据,多条数据需要使用批量操作,可以使用REST API接口


js sdk中有更新某个表某个字段所有值的函数吗 没有的,只能一个个更新,REST API有一个批量更新的接口,但是每次最多只能操作50条数据


JavaScript 传输数据时,自动加密了吗? Bmob所有SDK的通讯过程都进行了加密。


消息推送 JS SDK支持吗?我使用H5进行APP开发 JS有推送功能,可以查看推送文档。


BmobSocketIo.onUpdateTable可以无视ACL 实时监听功能不受ACL的限制。


JS SDK 的初始化语句应该放在哪里? 用框架集成到一个页面,例如angularjs 的ng-view。不然只能哪里用到,哪里调用


JS SDK可以增加模糊查询吗 目前JS并没有该接口,可使用JS的网络访问接口调用REST API api实现,REST API api中含有模糊查询的功能。


我需要将数据加密后再保存到Bmob表吗? 所有SDK到服务器之间的数据都是经过对称加密算法加密后传输的。


JavaScript怎么在bomb数据库里面存入date类型。

var number = 42;
var string = "the number is " + number;
var date = new Date();
var array = [string, number];
var object = { number: number, string: string };

var bigObject = new BigObject();
bigObject.set("myNumber", number);
bigObject.set("myString", string);
bigObject.set("myDate", date);
bigObject.set("myArray", array);
bigObject.set("myObject", object);
bigObject.set("myNull", null);
bigObject.save();

bmob的query查询可以做对指定列做sum之类的聚合查询吗? 可以。具体查看JS使用文档


JS版里有多图片上传吗 JS版没有多图片上传,需要自行处理


js中用户登录返回的session是不是都一样? 同一个用户多次登录返回的SessionToken是一样

PHP

php为什么添加数据的时候字段的值为中文就会出错 检查下你的php编码,建议改为utf-8编码。


有没有ts的sdk php的sdk只有一个


使用PHP CURL 推送消息的代码,推送不成功,能否给个例子 请检查证书是否设置好


操作数据库的话,比如更新两个表,数据回滚有没有? Bmob暂时没有事务操作,你要想同时更新两个表的话,可以使用批量操作。


** test.php出现unauthorized 下载sdk之后,修改了配置文件的Application ID和REST API Key 运行test.php出现BmobException: [0]: unauthorized app id 或 REST API key不正确


php 这边可以插入关联对象吗? 现在官方有生成关联对象的方法 : 具体在bmob官方php接口中的BmobRestClient.class.php文件中的dataType()方法,可以自行阅读


bmob 最多能取多少条数据 一次最多1000条


bmob bql多表查询如何实现 目前不支持多表查询


php如何使用get()方法取得不只100条数据?(PHPSDK如何循环获取数据?) 请使用分页查询,设置limit值,limit值默认为100,可以根据需要进行设置,具体可查看php文档https://github.com/bmob/bmob-php-sdk/tree/master/doc_develop中的分页查询章节


获取表中所有数据后怎么单个输出自己需要的数据 查询后返回的是对象数组,您只需要遍历该数组即可。


PC上如何使用Bmob?PC上只能用C#和PHP开发吗? PHP是我们官方出的SDK,你还可以根据restapi文档开发更多的SDK,非常简单。开发的时候需要注意点的是:1、https协议的问题; 2、header 和 body 的问题; 3、发送方式的问题,如POST、GET、PUT、DELETE。


我有两个表,_User可以放用户的数据,另一个表的password怎么设置成密码? 只有使用_User表的密码才能使用BmobUser的功能,否则接口需要自己再写


实时数据是什么原理?是客户端轮询吗? 客户端与服务器维护了一个长连接,有消息时由服务端主动推送消息

REST API

RestApi 如何进行ACL查询呢?比如有一张表,设置了某条数据,某个用户才能读取查看,那该用户如何获取该条数据呢使用RestApi 普通的查询就可以获取了,只要设置了ACL,其它使用就是正常的读写,如果没有权限会有提示


上传成功,移动文件位置,请问keyoffile 和group代表什么?请问我用C#调用restApi上传文件成功,想把文件移动到指定的位置,文档说用PUT请求,发送data: {keyOfFile:{"__type":"File","group":"upyun","filename": fileName, url: url},请问里面的keyoffile 和group代表什么 keyOfFile表示你存文件的那个表的字段名,group填个group1就可以了


STM32主板上其他模块获取到的数据怎么通过GPRS上传到服务器上 得看你的板子是否支持https请求,如果支持https请求则可以直接使用REST API接口进行上传


RESTAPI 的文档中提到了发送请求创建ACL规则时的body内容,请问发送该请求时的url是什么? 访问哪张表,就给那张表的acl字段进行更新就可以了


bql是否支持limit order by 支持,写法如下bql=select * from VersionInfo limit 0,1 order by -version,limit 后面跟两个参数,第一个表示跳过的记录,第二个表示返回的记录数


restAPI只能通过443端口https访问不能通过80http访问吗? 是的,只能通过htts访问


RestApi如何让数据库的某一字段增加1 使用原子计算器来实现


想通过GPRS模块利用tcp协议上传数据,利用restapi,怎么确认云服务器的ip地址? restapi都是通过https协议来进行请求的


在Android应用中,不使用BmobSDK,仅用RestAPI, 做到接收推送消息 发布推送可以不使用sdk,但接收推送需要用到。


C++ 使用curl post 数据产生中文乱码 把文件改为 UTF-8 无BOM格式


restAPI 使用短信验证码进行密码重置问题 用短信验证码进行密码重置 的接口 https://自己备案域名/1/resetPasswordBySmsCode ,从接口描述来看,需要上传的信息只有 验证码和新密码,用户的 session 或手机号都不需要上传。 那后台如何知道这个验证码是哪个手机号发来的呢? 后台是根据你的手机号来生成验证码的,服务端可以知道具体的验证码对应哪个手机号,请放心使用


我需要多图上传,云端数据库的表应该怎么处理多图逻辑,类似于qq空间的多图上传。 可以在图片上传后把url保存在一个数组当中


如何用Rest api创建表设置唯一键 唯一键的的设置暂时没有开放restapi接口,我们会考虑进去,后续加入。


使用Pointer能否“反向”查询? 有一个用户表User,一个公司表Company。每个用户都有一个Pointer字段指向某一个公司。请问如何在查询公司信息的时候,一次性把公司包含的所有用户都查出来? 目前没有这样的功能,只能在查询到具体的公司信息后,再用Company对象去约束用户表,把该公司下的用户信息查询出来


可否使用C++集成 用restapi文档对接C++就可以了


如何比较updatedAt字段 例:where={"createdAt":{"$gte":{"__type":"Date","iso":"2011-08-21 18:02:52"}}}


想要测试一下平台的短信服务,出现错误10011 no remaining number for send messages. 该账户无可用的发送短信条数,每个账号不是存在100条可用短信吗? 除了100条限制外还有以下限制的,短信发送限制规则是1/分钟,5/小时,10/天。即对于一个应用来说,一天给同一手机号发送短信不能超过10条,一小时给同一手机号发送短信不能超过5条,一分钟给同一手机号发送短信不能超过1条。


如果列没数据为空,返回行据然列字段名都不返回 Bmob使用的MongoDB数据库,该数据库是无模式的,也就是说您并不需要事先设置列值,而对于某个对象,如果你没有明确设置其值,那么该值就是空的,不存在默认值。


我在一张表中加关系性字段,为什么是在关联表里新建一行,而不可以选择关联表里已经存在的对象 目前只能通过请求添加relation关系,web端无法添加。


在【快速入门】【RestAPI快速入门】的CURL例子中的URL的“GameScore”是什么意思? 在【快速入门】【RestAPI快速入门】的CURL例子中的URL的“GameScore”是什么意思?我需要将这个"GameScore"改为我的应用名字吗?还是改成我的表的名字? GameScore是表名,你可以改为你自己的表的名字。 application id才是对应你的应用。


restAPI一个post请求后,提示error:unauthorized是什么意思 发送方式有问题,没有把application id 和 rest key正确发送到Bmob后端


使用httpClient POST请求一个接口返回的错误信息content is empty. 错误的含义:post请求里body内容为空


Master Key不能用在RestApi上吗? 可以。masterkey是超级权限,不会受到表是否只读的限制,对于restapi、云端代码和SDK都一样的。


restApi中注册用户邮箱验证功能,可不可以在注册时emailVerified直接赋true 不行的,emailVerified是系统内置的字段,后端有邮件的触发行为,不能直接的赋值为true。如果你不想用这个字段,完全忽略就可以了。


restApi查询表可以去掉重复的记录吗 就像sql的 distinct 暂无该功能。


restapi 过滤用中文过滤不了。 where={"name":"guangzhou"} 这个ok where={"name":"广州"} 这个不行 注意使用urlencode编码,不会存在中文匹配不了的问题的。


ajax不支持非标准的http请求头,像“X-Bmob-Application-Id”这种非标准的请求头,在ajax中是不被接受的,当ajax请求中设置了“X-Bmob-Application-Id”,这个请求的method就变成了"options"这个非标准的方法。 js的调用请使用bmob提供的js sdk,在sdk中已经解决了这个问题


在我不知道用户密码的情况下 可以通过其他字段进行查询user用户表吗 可以查询


如何在线测试RestApi 使用Chrome浏览器的Postman插件就可以进行调试了。点击链接Postman下载地址


Postman发起数据请求没有反应 首先先检查本地网络,通常是因为本地网络或者Postman没有成功发出数据请求,其次可以打开https://自己备案域名/查看是否能打开进行测试。


其他语言用RestApi开发遇到请求security的错误 请查找相关语言访问HTTPS的配置问题。 如PHP用CURL开发时,需要添加如下脚本:

curl_setopt($c, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, FALSE);

关于where条件的问题 有开发者提出用PostMan请求的时候没有问题,但是用Java请求构造了where查询条件的时候有错(请求的格式大致如, https://自己备案域名/1/classes/Footballer?limit=20&where={"location": {"$nearSphere": {"__type": "GeoPoint","latitude": 32.31735060,"longitude": 118.32457035 }}} )。

这个问题是因为特殊字符导致的问题,大家可以参考以下的解决方案:

http://stackoverflow.com/questions/636770/is-there-any-java-equivalent-of-phps-http-build-query-function

顺便说一句,PHP中的话,可以直接用http_build_query方法构造请求参数。


Restapi有IM吗? restapi可以发送推送信息,也可以通过get的方式获取聊天内容,但没有开放长连接服务,也就是说用restapi可以实现im功能,但方法只能通过定时器+get数据的方式。


哪里可以看到错误码 点击这里可以查看错误码列表。

云函数常见问题

使用云函数需要掌握什么语言 Javascript,因为云函数是用Nodejs部署架构的。


云函数能做什么事情 云函数的推出是为了给大家解决更多后端业务逻辑的问题,让大家尽可能把更多的业务逻辑挪到云端,实现更快的更新迭代。目前,云函数除可以自由操作云端数据库外,还提供了邮件模块HTTP模块事件模块等,方便大家自由发挥。


云函数能上传文件吗 暂不支持。


如何调试云函数 - Bmob在Web端(当前云函数的下边)为大家提供最简单的云函数的调试工具。 - 云函数本地化调试工具:https://github.com/bmob/bmob-cloud-tool


云函数或者android上update能否不用objectid用组合条件 只能根据objectid来,在查询返回的结果集中有objectid


云函数,可以把消息发给IMSDK吗 目前不可以。


url转码怎么转 encodeURI(url)


如何使用同步的ohttp.post请求 用eventproxy


相同的代码,在Local中可以返回正确的结果,在Server中返回错误。请问如何解决? 把本地的nodejs版本改成和云端一样,然后调试通过就可以了


bmob的短信服务端验证接口云函数怎么做?要发送一个post请求 使用云函数发送http请求即可


生成新应用时云函数没有复制到新应用 可使用云函数的本地调试工具可以运行后可以直接导入


云函数能否实现 WebSocket ? 云函数无法使用第三方库


往表中添加基本类型的数据是调用数据库对象的insert方法,而添加关联关系对象是用add方法??那我的表里有这两种数据类型,该怎么添加数据 分别存储


保存一个Object类型字段的值为null的时候会报错 保存为这样{}


如何实现一个签到的逻辑 在用户表添加一个字段--签到时间,当用户发送请求的时候,更新这个签到时间,如果签到时间为今天,说明已经签到


where语句如何查询24小时之前创建的记录? 查询createdAt在24小时之前的记录就可以了


删除数据库记录只能用objectId吗?不能用where条件吗 只能用objectId,where条件用于查询,查询后的结果集中会有ObjectId的。


云函数怎么设定where条件

"where":{
"updatedAt":{
"$lt":{"__type":"Date","iso":"2014-01-29 11:33:53"}
}


在查找数据库的回调里面再查找,不能收到回调消息

db.find(
{
"table":strTableName,
"count":1,
"limit":0,
},
function(err1,data1)
{
var searchNum = data1; //表的总行数,用sql语句获得
var limitnum=1000; //默认最多返回1000条记录
var runcount= parseInt(searchNum/1000);
var strOutID = '';

//分多次获取记录,因为每次只能获取1000条
var i = 0;

for(i = 0;i !== runcount; i++){

var skipNum= 1000*i;
if( i==runcount ) {
limitnum=searchNum-skipNum;
} else {
limitnum=1000;
}
//能执行到这里,
//response.send('data1');
db.find(
{
"table":strTableName,
"count":1,
"limit":0,
},
function(err2,data2)
{
//这里执行不到
response.send('data2');
}
);
}
}
);

不能这样取,只能取一次,然后再取一次,不能在里面for循环


云函数可以查询支付订单吗?返回订单结果和数额之类的,有相关函数吗 可以使用云函数去调用REST API接口来查询


云函数可以实现抓取别的网页信息吗?比如说,我客户端去请求云函数,让云函数实现抓取某个咨询网站的信息 可以,使用云函数的http请求抓取即可。


请问云函数可以发送短信吗? 可以通过云函数调用REST API接口来实现。


云函数更新用户表错误,但是最后返回的err包含错误信息 {"code":206,"message":"User cannot be altered without sessionToken Error."}

必须先登录才能更新


请问云函数怎么返回JSON数据

var data = { dir: 'kunhony', param: 'archive' };
var str = JSON.stringify(data);
response.end(str);

如何在云端请求微信

http://doc.bmobapp.com/cloud_function/web/


Bmob中如何支持Cookie?用于将SessionID分配给浏览器

不支持set-cookie的方法。


请问云函数如何返回错误?

如下,代码一般为这种形式,如果错误,返回response.send(err);

function onRequest(request, response, modules) {

var functions = modules.oFunctions;

functions.run({
   "name": "test",
   "data":{"content":"你好","address":"guangzhou"}
},function(err,data){
   //回调函数
   if(err){
       response.send(err);
    }else {
       response.send(data);
    }
});
}

开发公众号可以获取微信的openid吗

可以


云函数如何进行模糊查询

调用REST API的模糊查询接口


云函数能引入第三方模块吗?如underscore

不可以,如要使用第三方模块,可考虑使用窗口服务。


我有一个云函数,客户端访问的时候查看一条数据库对象,如果不存在,则创建、返回,如果存在则直接返回。所有客户端的访问都是查看同一个对象,如何保证多个客户端同时访问的时候不会同时创建多个对象?

目前这个无法做到。


bql不支持 delete语句吗

目前bql只支持查询语句。


表设置了 ACL, 我想用 master key 或 用户的 token 去更新表,在云端用批量更新模块,如何传入master key 或 用户的 token ?

目前不支持


云函数怎么延迟执行一个操作

目前并无该项功能


云函数中不同的模块中经常出现相同代码 有没有办法把这些代码提取到公共区域来复用

云函数之间是可以相互调用的,具体查看云函数云对象章节。


如何清空某个数据表?

需要先将表的所有值查询下来,然后遍历去删除,具体参考文档的查询及删除对象章节


怎么在云端调用 获取短信验证码、验证短信验证码

使用云函数进行http请求,请求REST API接口即可


云端如何自定义返回数据

定义好格式后以JSON形式返回


云函数MD5加密中文,结果怎么和PHP的不一样?

编码问题,https://cnodejs.org/topic/54ad4e40ce87bace2444cc49


BMOB云端数据库导入需手动导入CSV格式,如何做到自动抓取我本地CSV文件传入云端数据库

Bmob导入数据,只可以从web后台手动导入。如果你要自动从本地传入数据库的话,可以自己写代码(程序)实现,用Bmob提供的SDK或基于RestApi来插入数据到云端数据库中。


云端数据库更新需上传CSV文件,如何实现自动云端更新

云端数据库与你本地数据库的结构可能会有区别,需要你针对自己的数据库特点,读取本地数据库,转换后再进行上传


用云端查询db.find,查询到表里的数据,返回的字段名也是表的列名,有没有像sql里面as的方式修改这个名字

目前还没有这个功能


如果一个字段里没有值,查询后返回的内容也没有这个字段,如果才能让这个字段也出现在返回的内容里。

由于后台使用的是MongoDB,是无模式的,没有初始值,因此只有显示地给该字段赋值才会有内容返回。


写云函数的时候,只能通过objectId来查询符合条件的一行数据?我想用表中的其他字段当做查询条件怎么写?

可以使用条件查询,具体查看数据库对象中的查询多条数据小节。


用skip和limit来实现分页查询的话,如果表里的数据更新的很快的话,会不会查询出重复的数据?

会出现重复数据,因此,一般您在查询时可以加上限制,比如,查询第一页时的时间为A,那您可以约束查询创建时间在A之前的数据,在那之后的数据不查询,这样就不会有重复了。


该如何实现类似乐观锁的功能

目前并没有提供该类型的接口


连上vpn没有数据返回

可以在连上VPN时ping https://自己备案域名/看看能否ping通,有可能是VPN屏蔽了


云函数中where条件怎么表示!=?

您好,可以参考REST API文档中的查询数据中的条件查询,大概的形式为"type":{"$ne":"delete"}


如何更新1000条以上的记录

可以采用分页,先取1000条数据进行更新,再取1000条之后的数据接着更新


请问云函数请求HTTP时如何获取cookies和带cookies访问?

将var http = modules.oHttp; 改成var http = modules.oHttp.defaults({jar: true}); 即可使用全局cookie,后面的链接就不需要手动输入cookie了。


JavaScript能调用云函数吗(xx平台能调用云函数)

只要支持https请求就可以通过REST API来调用云函数,部分sdk直接封装了调用云函数的接口,具体可以查看云函数文档。


请问云端new Date()如何获取和createTime里面一样的时间

createAt这个属性是特殊字段,为了节约HTTP流量,我们没有进行特殊字段类型处理,直接返回string类型。你在云函数里面new Date()获取的是一样的时间,因为服务器的时间是保持一致的。至于两者的数据格式问题,你可以自行处理。


云函数数据库可以返回多少条记录?

一次最多只能返回1000次数据,如果要获取的数据大于整个数目,必须要分多次查询


云函数只能添加方法吗 我想在云函数中添加一个功能模块,但是发现云函数中的每个文件都是独立的,而且只能是方法,我想问一下能不能实现。

完全可以在方法内声明方法或者类的,这个不影响,而且可以通过间接调用的方式调用其他云函数的执行。


webstorm在本地搭好服务器,在不联网的情况下,使用ios调用运行在本地的服务端代码,能不能利用这样的方式测试?

不可以,数据保存在云端,不联网无法操作数据,本地调试过程中不需要客户端的参与。


云函数执行console.log无输出

在真正的云函数上,不支持console.log这种输出,只能使用res.end()


云端怎么实现 var wpwp = require('wpwp')('YOUR-KEY');

云函数进行了封装,无法加载非官方模块。


如何更新数据表中Date的数据

var userData = dataObject.results[0];
var checkDate = userData.checkDate.iso;

var lastDate = new Date(checkDate.toString());
var nowDate = new Date();

db.setHeader({"x-bmob-session-token":request.body.sessionToken.toString()});
userData.checkDate.iso=nowDate;
db.updateUserByObjectId({"objectId":request.body.objectId.toString() ,data: {"checkDate":userData.checkDate,"diamond":parseInt(userData.diamond)+10}},function(err,data)
{
})

containedIn在云函数里面是什么指令

对应为 REST API开发文档 查询小节里面的 $in 查询,你可以参考REST API文档,在where条件中使用就可以了。


如何在云函数中计算两个时间的时间差

var lastDate;//一定要是Date哦
var nowDate = new Date(data);

Date.parse(nowDate) - Date.parse(lastDate)

//注意:单位是毫秒级的哦

批量操作对象中 "path": "/1/classes/GameScore" ,其中的 "/1/class/ "是什么来的?怎么确定下来的?

/1/classse/ 是系统规定的路径,其中1是系统内部的版本号,classes表示接下来要操作的是数据表。


云函数能不能实现函数递归调用

可以,但要注意不能过于复杂,5s内无回调会提示超时。


我想用云函数修改user表中的数组,要如何设置?如何先获取表中的数组呢?获取了之后又要如何用arr.addUnique更新?求示例。

要修改User表中的数据需要注意: 1. 要么你有登录用户的sessionToken信息(也就是权限),这样可以修改用户信息; 2. 要么你用masterKey(也就是超级权限)来修改用户信息。

获取表中的信息非常简单,你直接Get就可以了,获取之后,你直接用类似如下的方法解决:

var arr = modules.oArray;
arr.addUnique({
"table":"_User",

"objectId":"j4w2DDDT", //这个对应是这个用户的objectId
"data":{"skills":{"__op":"AddUnique","objects":["flying","kungfu"]}}

},function(err,data){
//回调函数
});

云函数比较复杂的时候,很难找出根本原因 1. 能否支持加入日志,通过查看日志来debug? 2. 能否有类似IDE的断点,或者是报错信息更明确一点在哪里出错?

可以借助我们开发的这个云函数本地化调试工具来调试: https://github.com/bmob/bmob-cloud-tool


对于设置了ACL为用户只读的数据,如何在云函数里将其全部读出?

使用masterKey 云函数设置masterkey的方法:

function onRequest(request, response, modules) {
var db = modules.oData;
db.setHeader({"X-Bmob-Master-Key":"这里填写Master Key信息"});
db.updateUserByObjectId({"objectId":"这里是需要更新的用户ObjectId信息" ,data:{"username":"123"}},function(err,data){
response.end("更新成功");
});
}

如果把代码放在云端,本地JS调用时,是否需要输入Application ID、REST API Key才能进行调用呢?

只需要在初始化js sdk的时候传人Application ID、REST API Key就行了,在js调用云函数的时候不需要传入


云函数里如何获取当前时间

云函数是运行在nodejs的环境中,所以js的函数能用在云函数上。 获取时间: var now = new Date();


调用云函数,能否获取调用者的真实IP,想用IP来做排行榜的地理位置统计

云函数打印headers

function onRequest(request, response, modules) {
response.send(request.headers);
}

结果:

Response Body
{
"code": 200,
"msg":
{
"x-real-ip": "114.114.114.114",
"x-forwarded-for": "114.114.114.114",
"host": "cloud.bmobapp.com",
"x-nginx-proxy": "true",
"connection": "close",
"accept": "/",
"a": "",
"content-length": "7",
"content-type": "application/x-www-form-urlencoded"
}
}

x-real-ip就是用户的真实ip的


请问怎么查询用户当前排名 比如:我有个GameScore 表 字段有:username,score 现在排行榜里面数据有5000多条,我知道某个用户objectId,如果快速找出排名位置呢?

解决方案: 根据order排名,把所有排名按次序放到一个数组中,然后根据objectId查找到某个用户名,用户名在这个数组中的位置即是他的排名。 RestAPI查询条件如下: 第一步:先查询到某个用户的用户名:

curl -X GET \
-H "X-Bmob-Application-Id: Your Application ID" \
-H "X-Bmob-REST-API-Key: Your REST API Key" \
-G \
--data-urlencode 'keys=username' \
https://自己备案域名/1/users/某个用户的objectId

第二步:score降序获取前1000名的用户的用户名:

curl -X GET \
-H "X-Bmob-Application-Id: Your Application ID" \
-H "X-Bmob-REST-API-Key: Your REST API Key" \
-G \
--data-urlencode 'keys=username&order=-score&count=true&limit=1000&skip=0' \
https://自己备案域名/1/classes/GameScore

返回前1000名的用户名,判断前一个查询的用户名是否在这个数组的哪个位置,如果没有找到,继续第二步, skip设为1000,直到找到为止。

优化方案: GameScore应该添加Pointer类型指向某个用户,然后在GameScore添加一个排名的列,更新score的时候更新排名,这样就可以直接根据用户的objectId一条查询就出来了。

本地iOS工程怎么调用云函数 云函数iOS开发文档

短信服务常见问题

购买方法及发票问题 登录开发者后台-->点击某个应用-->短信-->短信信息-->充值 里面进行自由购买。 需要发票报销的可以联系客服开具发票。


为什么有时候收不到短信 请检查你是否短时间内给同一个手机号码发送了多次短信,短信发送限制规则是1/分钟,5/小时,10/天。即对于一个应用来说,一天给同一手机号发送短信不能超过10条,一小时给同一手机号发送短信不能超过5条,一分钟给同一手机号发送短信不能超过1条。 还有一种情况是回复过TD退订的会被运营商列为黑名单,该通道不回再给该号码发送任何短信信息。如需要接收信息,需要在官网上联系客服QQ解封。


短信服务的签名可以换成我们自己定义的吗 短信服务支持自定义签名,只需要在控制台短信设置处进行设置即可。


提交短信验证码模板时需注意什么 1.模板中不能有【】和 [] ,否则审核不通过。 2.如果你提交的短信模板无法发送,则有可能包含一些敏感监控词,具体可去Github下载 短信关键字监控参考文档 来查看提交内容是否合法。 3.一天一个应用给同一手机号发送的短信不能超过10条,否则会报10010错误,其他错误码可查看 错误码


注册短信验证码发送以后多久后才能重发 短信发送限制规则是1/分钟,5/小时,10/天。即对于一个应用来说,一天给同一手机号发送短信不能超过10条,一小时给同一手机号发送短信不能超过5条,一分钟给同一手机号发送短信不能超过1条


当使用不是Bmob的短信功能时,如何通过短信找回密码?现在短信验证mob(shard sdk)是免费的,而bmob的收费的.像我们这种没资本的开发者只能刚开始是用免费的,所以注册时都是用mob的短信sdk进行验证.但是假如有一天用户的密码忘记了.想通过短信的方式来找回的话.那么就不能用mob的短信功能来做了.只能通过bmob的邮箱方式,但是作为手机端这个显然是体验不好 可以结合云端代码来解决。用mob验证验证码成功之后,就用 云端代码+master key 的方式,修改_User表的密码记录。

iOS

iOS 新安装的短信SDK 和之前安装的BmobSDK有冲突 短信SDK是在不需要使用BmobSDK时才使用的,BmobSDK里本身包含的短信SDK的所有内容,所以你将短信SDK移除就可以了


手机验证码注册不成功 如果注册前不验证验证码是否正确,直接发送注册请求,就可以注册成功,如果先验证,就会报错。提示:code error 207 ,输入的验证码是正确的。请问如何解决。

- (IBAction)registerNewUser:(id)sender {
// 验证注册码是否正确
[BmobSMS verifySMSCodeInBackgroundWithPhoneNumber:self.phoneNumber.text andSMSCode:self.smsNumber.text resultBlock:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
// 发送注册请求
BmobUser *buser = [[BmobUser alloc]init];
[buser setUsername:self.phoneNumber.text];
[buser setPassword:self.password.text];
[buser setMobilePhoneNumber:self.phoneNumber.text];

[buser signUpOrLoginInbackgroundWithSMSCode:self.smsNumber.text block:^(BOOL isSuccessful, NSError *error) {

if (isSuccessful) {
NSLog(@"注册成功");
}else{
NSLog(@"注册失败%@",error);
}
}];

}else{

NSLog(@"输入的验证码不正确");
}

}];

}

验证码注册只需要在注册的时候输入即可,不需要先进行一次验证的,verifySMSCodeInBackgroundWithPhoneNumber方法是用于注册以后的验证功能


注册时需要短信验证, 改怎么实现 注册时让用户填写手机号码,再进行验证即可,有手机注册验证接口

推送服务常见问题

推送服务采用的协议是什么

Websocket


会不会限制推送消息的数量

没有限制! 推送的用户数量没有限制,每天推送的消息条数也没有限制,所有都没有限制。


服务器能支撑的长连接有多大

Bmob的推送服务器是耗内存型的,保持1个长连接占用<10KB的内存,64GB的内存能够支撑600万用户的长连接。


Android推送收不到消息

1.手机是否连入网络 2.包名(应用包名,看配置文件)是否正确填写在web后台中

如果还是不能接收到推送,请检查:

3.手机是否有bmob的推送后台在运行 4.后台的Installation表有没有该手机对应的设备信息


iOS推送接收不到消息

iOS的推送都是用apns。你确认是否操作了几点: 1.检查推送的代码是否写错; 2.真机操作; 3.Bmob后台上传了未加密的p12证书; 4.Bmob数据后台的Installation表是否可以看到对应数据。 5.push token是否保存到服务器了


推送的耗电和耗流量情况怎样

以下说到的,不考虑推送的内容部分。推送内容的多少是由开发者决定的。

另外,实测电量、流量消耗,与网络状况相关比较大。

所以这里的数据是理论平均值:流量消耗 50K/天,电量消耗 60mAh/天。


可以推送富文本到客户端吗

不直接支持文件的推送,但可以通过推送 url 来实现。 即先推送文件下载 url,到客户端触发逻辑来通过 url 下载文件。


iOS在服务端如何推送有声音和Badge提示

需要开发者自己定义JSON格式,格式如下:

{
    "alert" : "You got your emails.",
    "badge" : 9,
    "sound" : "bingbong.aiff"
}

Android

手机中安装两个包含bmob push sdk的app,那么这时另一个包含bmobpush sdk的app会报错。

解决方法: 删除androidMainfest.xml中 <permission android:protectionLevel="normal" android:name="cn.bmob.permission.push"></permission> 这一句。

其实这一句完全可以不加,也可以正常使用,亲测2个app推送正常,且不报错,关于原因请百度android permission相关知识(如果找不到再找客服吧~)


消息推送后点击消息进入不同的fragment页面

这个是需要自己去定义的,在点击进入时应该有一个地方可以控制页面的行为的,具体的谷歌百度会有很多资料


用PushManager.pushMessage(text)推送的消息能设置过期时间吗?默认的过期时间是多久?

暂时没有该功能。


消息推送里要设置的包名是指什么包

消息推送里要设置的包名是你应用的包名(Androidmanifest文件中的package)

iOS

按照设制好了IOS推送,推送后显示状态为“发送至APNS”,但前面写着“推送0条”,此时,手机也未接收到信息,是为什么?

1.看看Installation表是否有设备信息; 2.Bmob后台中是否把推送证书添加上去(不能加密); 3.你先尝试推送给所有的真实手机。


如何用 BmobPush发送原始apns报文?

要发送原始信息的可以使用-(void)setData:(NSDictionary *)data;方法


在iOS中 在代码中如何创建一个空表 只包含各列的属性 而不创建具体的一条数据。

参考代码

BmobInstallation *ins = [BmobInstallation currentInstallation];
[ins saveInBackgroundWithResultBlock:^(BOOL isSuccessful, NSError *error) {
    if (error) {
        NSLog(@"%@",error);
    } else {
        NSLog(@"success");
        NSLog(@"%@",ins.objectId);
    }
}];

消息推送的条件查询(根据特定的查询条件进行推送)能在自己创建的表格中进行查询条件推送

只能使用自带的installation表来查询。


在installation 表中创立新的列无法添加进去数据

BmobInstallation *currentIntallation = [BmobInstallation currentInstallation];
[currentIntallation setObject:@"123" forKey:@"classes"];

[currentIntallation saveInBackground];

确实是无法直接这么加的,建议使用channel来实现业务需求


消息推送的条件查询(根据特定的查询条件进行推送)能在自己创建的表格中进行查询条件推送吗?

不可以,只能使用自带的installation表来查询

交易常见问题

小程序部署

购买源码

在网址栏输入https://www.bmobapp.com/shop/index或者在百度输入Bmob进行搜索,打开Bmob官网,点击源码栏目。这里都是基于Bmob后端云开发的完整项目,购买后即可获得项目源码,云数据库表设计和说明文档。

购买源码后自动在Bmob控制台创建应用,你可以在源码一栏查看购买项目,下载源码和说明文档。


注册账号,创建小程序

首先在微信公众平台注册一个账号,选择小程序,注册完之后就可以登录公众平台管理小程序了,包括小程序的命名,类型等。


配置安全域名

进入Bmob控制台找到对应的应用,点击应用进入设置->应用配置,你可以看到微信小程序服务器域名配置。

登录微信公众平台,在设置->开发配置里面把这上图几个域名填写到微信公众平台的服务器域名,设置https域名 ,如Bmob应用未开启文件独立域名,downloadFile合法域名可以不填写。


授权小程序

进入Bmob控制台找到对应的应用,点击应用进入设置->应用配置,你可以看到微信小程序帐号服务配置,点击立即授权,使用微信公众平台的管理员扫描二维码进行授权。

进入微信公众平台,进入设置->开发设置,生成AppSecret(小程序密钥),将密钥复制粘贴到上图的AppSecret输入栏,点击保存。


初始化Bmob SDK

下载源码后用微信web开发者工具打开项目,输入AppID,点击确定,创建项目。然后在app.js中配置Application ID 和 REST API KEY,Application ID 和 REST API KEY在Bmob控制台应用设置->应用密钥


上传代码

SDK初始化完毕之后,就完成了整个项目的配置,这样就可以在微信web开发者工具上进行测试。如果项目测试完成之后,就可以将代码上传到微信公众平台进行审核。

上传完成之后在微信公众平台开发管理中就可以提交版本审核,审核通过之后该小程序就可以上线了。


小程序支付

需要你的小程序微信平台开通微信支付,然后在控制台应用配置中填写商户号、商户支付密钥,目前小程序支付Bmob平台不收取任何手续费,只要是Bmob平台付费会员,并且账号通过实名认证都可以使用。

列的默认值问题

为了减少默认值方面的疑惑,现特把默认值的例子说明一下:

类型 输入的例子 说明
String jeff 任意的字符串,如果默认值栏不输入任何值,则默认为空字符串
Number 23 数字
Boolean true或者false
Date CURRENT_TIME或者2006-01-02 15:04:05 值为CURRENT_TIME表示插入的是当前时间,其它时间值的格式为“2006-01-02 15:04:05”
File {"__type":"File","cdn":"upyun","filename":"新建文本文档.txt","url":"https://bmob-cdn-10.bmobcloud.com/2018/12/03/76815a8940e4da62803b0bbaa6320c5b.txt"} 用户需要修改的部分:其中"filename"为原来的文件名,url为上传文件后得到的url
GeoPoint 23.23422,12.23532 23.23422为latitude,12.23532为longitude
Array "tom","jeff"
Object {"name":"jeff"}
Pointer {"__type":"Pointer","className":"_User","objectId":"MqgrAAAL"} 用户需要修改的部分:"className"为指向的class,"objectId"为指向的class对应的记录Id
Relation {"__op": "AddRelation","objects": [{"__type": "Pointer","className": "_User","objectId": "MqgrAAAL"},{"__type": "Pointer","className": "_User", "objectId": "MTzXDDDG"}]} 参考Pointer类型