我不确定为什么每次从客户端调用该云代码函数时,该函数都会被调用 5 次。
云代码-
Parse.Cloud.define('PushTest', function(request, response){
console.log('PushTest called');
var query = new Parse.Query(Parse.Installation);
query.equalTo("username", request.params.Username);
query.equalTo("device_type","main");
Parse.Push.send({
where: query,
data: {
alert: "This is a test"
}
}, {
useMasterKey: true,
success: function() {
//push was succesful
console.log('Push Success');
},
error: function(error) {
//handle error
console.log('Push failure');
}
});
});
客户端代码 -
String username = ParseUser.getCurrentUser().getUsername();
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("Username", username);
ParseCloud.callFunctionInBackground("PushTest", params, new FunctionCallback<Object>() {
public void done(Object obj, ParseException e) {
if (e == null) {
Log.d(TAG, "Parse cloud called");
} else {
Log.d(TAG, "Parse cloud not called");
Log.d(TAG, e.getMessage());
}
}
});
每次我从客户端调用该函数时,我都会收到五个推送通知,而不是一个。关于我做错了什么有什么想法吗?
最佳答案
也许客户端由于某些错误(超时?)重试 4(默认 maxRetries)次
要检查是否是这种情况,请设置日志级别(低于 info)并在 sdk 中查看日志。 https://parse.com/docs/android/api/com/parse/Parse.html#setLogLevel(int)
日志设置在第 230 行左右。
PLog.i("com.parse.ParseRequest", "请求失败。在尝试 # 之前等待 "+ 延迟 + "毫秒"+ (attemptsMade + 1));
如果显示此日志,您应该尽力避免该错误。
对于快速解决方案,可以通过rest api调用它,这不会自动重试。 (不确定是否可以在sdk之外更改重试次数)
如果没有显示日志,请尝试查看客户端的请求。
为此,您可以使用 charles-proxy,将您的设备代理设置为您的计算机。
要查看详细信息 (SSL),请在您的设备上下载凭据并在计算机上设置 SSL 代理设置。
之后,您可以查看从您的设备发送的请求数量。
然后尝试找出问题所在。
关于javascript - 多次调用云代码函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062499/