多次调用云代码函数

时间:2016-05-06 00:45:50

标签: javascript java android parse-platform cloud-code

我不确定为什么每次从客户端调用函数时,这个云代码函数似乎被调用了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());
                }
            }
        });

每当我从客户端调用该函数时,我会收到五个推送通知而不是一个。关于我做错了什么的想法?

1 个答案:

答案 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));

https://github.com/ParsePlatform/Parse-SDK-Android/blob/master/Parse/src/main/java/com/parse/ParseRequest.java

如果显示此日志,则应尽量避免错误。

对于快速解决方案,可以通过rest api调用它,它不会自动重试。 (不确定重试时间是否可以在sdk之外更改)

如果日志未显示,请尝试查看客户端的请求。

为此,您可以使用charles-proxy,将设备代理设置为您的计算机。

要查看详细信息(SSL),请下载设备上的凭据并在计算机上设置SSL代理设置。

之后,您可以查看从您的设备发送的请求数量。

然后尝试找出问题所在。