2017-10-05 5 views
0

나는 코드 뒤에 무언가를하는 커스텀 플러그인을 작성하고 있습니다. 때때로 Ionic에 표시 할 수 있도록 진행 업데이트를 보내려고합니다. CallbackContext에서 적절한 메소드를 찾을 수 없습니다. 성공 콜백을 보내는 것은 한 번만 가능합니다. 진행 상황 콜백을 보내려면 어떻게해야합니까?Cordova Android 플러그인이 여러 콜백 (진행)을 보냅니다.

private void doHeavyStuff(final CallbackContext callbackContext){ 

    something.execute(new ResponseHandler() { 

      @Override 
      public void onProgress(String message) { 
       callbackContext.success(message); //what else ? 
      } 

      @Override 
      public void onFailure(String message) { 
       callbackContext.error(message); 
      } 

      @Override 
      public void onSuccess(String message) { 
       callbackContext.success(message); 
      } 
    }); 
} 

답변

2

당신은 콜백 인스턴스를 중지 setKeepCallback()를 사용할 수있는 여러 번 호출이 호출 할 수 있도록에서 제거되는이 공유를위한

public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException { 
    if(action.equals("doHeavyStuff"){ 
     // Start doing async heavy stuff... 

     // Preserve callback 
     PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT); 
     pluginResult.setKeepCallback(true); 
     callbackContext.sendPluginResult(pluginResult); 
     return true; 
    } 
} 

private void doHeavyStuff(final CallbackContext callbackContext){ 
    something.execute(new ResponseHandler() { 
     @Override 
     public void onProgress(String message) { 
      PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, message); 
      pluginResult.setKeepCallback(true); // keep callback 
      callbackContext.sendPluginResult(pluginResult); 
    } 

     @Override 
     public void onFailure(String message) { 
      callbackContext.error(message); 
     } 

     @Override 
     public void onSuccess(String message) { 
      callbackContext.success(message); 
     } 
    }); 
} 
+0

감사합니다! +1 – David

+0

늦게 응답 해 주셔서 죄송합니다. 귀하의 접근 방식은 정상적으로 작동합니다! – Anthea