@Override
  public boolean checkAndInitializeSdk(
      @NonNull Activity launcherActivity,
      @NonNull Map<String, Object> localExtras,
      @NonNull Map<String, String> serverExtras)
      throws Exception {
    synchronized (ChartboostRewardedVideo.class) {
      if (sInitialized) {
        return false;
      }

      if (!serverExtras.containsKey(APP_ID_KEY)) {
        throw new IllegalStateException(
            "Chartboost rewarded video initialization" + " failed due to missing application ID.");
      }

      if (!serverExtras.containsKey(APP_SIGNATURE_KEY)) {
        throw new IllegalStateException(
            "Chartboost rewarded video initialization"
                + " failed due to missing application signature.");
      }

      final String appId = serverExtras.get(APP_ID_KEY);
      final String appSignature = serverExtras.get(APP_SIGNATURE_KEY);

      Chartboost.startWithAppId(launcherActivity, appId, appSignature);
      Chartboost.setDelegate(sSingletonChartboostDelegate);

      sInitialized = true;
      return true;
    }
  }