我不确定为什么每次从客户端调用函数时,这个云代码函数似乎被调用了5次。
Cloud Code -
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());
}
}
});
每当我从客户端调用该函数时,我会收到五个推送通知而不是一个。关于我做错了什么的想法?
答案 0 :(得分:0)
由于某些错误(超时?)
,客户端可能会重试4次(默认的maxRetries)次数要检查是否是这种情况,请设置日志级别(小于info)并查看sdk中的日志。 https://parse.com/docs/android/api/com/parse/Parse.html#setLogLevel(int)
日志设置为第230行。
PLog.i(&#34; com.parse.ParseRequest&#34;,&#34;请求失败。等待&#34; +延迟+&#34;尝试前的毫秒#&#34; +(attemptsMade) + 1));
如果显示此日志,则应尽量避免错误。
对于快速解决方案,可以通过rest api调用它,它不会自动重试。 (不确定重试时间是否可以在sdk之外更改)
如果日志未显示,请尝试查看客户端的请求。
为此,您可以使用charles-proxy,将设备代理设置为您的计算机。
要查看详细信息(SSL),请下载设备上的凭据并在计算机上设置SSL代理设置。
之后,您可以查看从您的设备发送的请求数量。
然后尝试找出问题所在。