code: @Override
      public void sendMetrics(final UnifiedPushMetricsMessage metricsMessage,
              final Callback<UnifiedPushMetricsMessage> callback) {
          new AsyncTask<Void, Void, Exception>() {
              @Override
              protected Exception doInBackground(Void... params) {
  
                  try {
  
                      if ((metricsMessage.getMessageId() == null) || (metricsMessage.getMessageId().trim().equals(""))) {
                          throw new IllegalStateException("Message ID cannot be null or blank");
                      }
  
                      HttpProvider provider = httpProviderProvider.get(metricsURL, TIMEOUT);
                      setPasswordAuthentication(variantId, secret, provider);
  
                      try {
                          provider.put(metricsMessage.getMessageId(), "");
                          return null;
                      } catch (HttpException ex) {
                          return ex;
                      }
  
                  } catch (Exception ex) {
                      return ex;
                  }
  
              }
  
              @SuppressWarnings("unchecked")
              @Override
              protected void onPostExecute(Exception result) {
                  if (result == null) {
                      callback.onSuccess(metricsMessage);
                  } else {
                      callback.onFailure(result);
                  }
              }
  
          }.execute((Void) null);
      }
docs: Send a confirmation the message was opened
  
  @param metricsMessage The id of the message received
  @param callback a callback.