2016-05-06 4 views
0

Я не уверен, почему эта функция облачного кода вызывается 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()); 
       } 
      } 
     }); 

Каждый раз, когда я вызываю функцию от клиента, я получаю пять толчок уведомления, а не только один. Любые идеи относительно того, что я делаю неправильно?

ответ

0

Может клиент повторить это 4 (по умолчанию maxRetries) раз из-за какой-то ошибки (тайм-аут?)

Чтобы проверить этот случай, установите уровень протоколирования (меньше информации) и посмотреть журнал в SDK. https://parse.com/docs/android/api/com/parse/Parse.html#setLogLevel(int)

Бревно устанавливается около линии 230.

PLog.i ("com.parse.ParseRequest", "Не удалось выполнить запрос. Ожидание" + задержки + "миллисекунды перед тем попытка #" + (attemptsMade + 1));

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

Если этот журнал показывает, и должны попытаться избежать этой ошибки.

Для быстрого решения может быть вызвано его отдыхом api, которое не будет автоматически повторять попытку. (не уверен, что время повтора может быть изменено за пределами sdk)

Если журнал не показан, попробуйте просмотреть запрос от клиента.

Для этого вы можете использовать charles-proxy, установить прокси-сервер своего устройства на свой компьютер.

Чтобы просмотреть детальную информацию (SSL), загрузить учетные данные на своем устройстве и установить настройку SSL-прокси на компьютере.

После этого вы можете увидеть, сколько запросов отправлено с вашего устройства.

И затем попытайтесь выяснить, в чем проблема.

Смежные вопросы