2015-07-02 12 views
1

У меня есть networkStateReceiver, который проверяет, есть ли у меня интернет или нет. Если я это сделаю, я возобновляю instabug, если нет, я хочу деактивировать. Как я могу это сделать? Я пробовал просто установить его как null, но он не работает.Instabug, можно ли отключить дрожание для обратной связи, если нет доступа в Интернет?

if(haveConnectedMobile || haveConnectedWifi){ 
      //TODO will need to make a queue, and go through all that queue 
      PSLocationCenter.getInstance().initInstabug(); 
     }else{ 
      PSLocationCenter.getInstance().instabug = null; 
     } 

Это мой INIT:

public void initInstabug() { 
    String[] feedbackArray = getResources().getStringArray(R.array.feedback); 
    String randomStr = feedbackArray[new Random().nextInt(feedbackArray.length)]; 
    Instabug.DEBUG = true; 
    instabug = Instabug.initialize(this) 
      .setAnnotationActivityClass(InstabugAnnotationActivity.class) 
      .setShowIntroDialog(true, PSTimelineActivity.class) 
      .enableEmailField(true, false) 
      .setEnableOverflowMenuItem(true) 
      .setDebugEnabled(true) 
      .setCommentRequired(true) 
      .setPostFeedbackMessage(randomStr) 
      .setPostBugReportMessage(randomStr) //TODO will be the post report message, random from array 
      .setCommentFieldHint("Please describe what went wrong") 
      .setPreSendingRunnable(new Runnable() { 
       @Override 
       public void run() { 
        String[] files = new String[2]; 
        files[0] = Environment.getExternalStorageDirectory() + "/Passenger/passenger_log.txt"; 
        files[1] = Environment.getExternalStorageDirectory() + "/Passenger/passenger_log2.txt"; 
        Compress compress = new Compress(files, Environment.getExternalStorageDirectory() + "/Passenger/log.zip"); 
        compress.zip(new CrudStateCallback() { 
         @Override 
         public void onResponse(String string) { 
          Log.i("", "ended making the archive"); 
         } 
        }); 
       } 
      }) 
      .attachFileAtLocation(Environment.getExternalStorageDirectory() + "/Passenger/log.zip"); 
} 

ответ

2

Вы можете использовать этот код, чтобы отключить Instabug автоматический вызов:

Instabug.getInstance().setInvocationEvent(IBGInvocationEvent.IBGInvocationEventNone) 

Таким образом, он не будет вызываться автоматически. Это повлияет только на следующее действие (но не на текущий). Вы можете принудительно остановить и перезапустить всех слушателей, вызвав и onResume на текущую активность. (Мы можем обратиться к этому в ближайшее время, так что такие изменения применяются к текущему запуску Activity).

Не забывайте также активировать событие вызова встряхивания, когда восстанавливается доступ в Интернет.

Обратите внимание: Instabug SDK уже кэширует все отчеты и будет пытаться отправить их в следующий запуск приложения, пока они не будут загружены.

+0

Я пробовал IBGInvocationEventNone, но это не сработало. Конечно, потому, что я не перезапускал активность. Хотя это больше не нужно, потому что, как вы сказали, если нет интернета, ДОЛЖЕН отправлять отчеты после выхода из Интернета. Я говорю СЛЕДУЕТ, потому что я попробовал, и на Iphone он отправил отчет, когда я активировал интернет, на Android этого не делал. PS: Я использую эту версию, поэтому она должна взять последнюю, правильную: компилировать 'com.instabug.library: instabugsupport: 1+' –

+0

Извините, просто прочитайте свой ответ еще раз. Он попытается отправить следующий запуск приложения? Это означает, что для отправки отчета мне нужно закрыть приложение и запустить его снова? Почему бы не поменять активность? –

+0

Не нужно принудительно закрывать приложение. Если вы вызываете onPause, тогда onResume в текущей активности, SDK перезапустит любые прослушиватели с новой конфигурацией. Можете ли вы отправить мне электронное письмо по адресу [email protected] в отношении сетевой проблемы? –

0

Просто хотел опубликовать обновленный ответ.

Поздние SDK изменил название и теперь вы можете отключить его следующим кодом:

Instabug.changeInvocationEvent(InstabugInvocationEvent.NONE) 

Обратите внимание, если вы хотите, чтобы отключить его для всего приложения, просто вызовите этот метод в Application классе