code: protected synchronized void setupAds() {
          String unitId = getReleaseUnitId() != null ? getReleaseUnitId() : getDefaultUnitId();
          AdLoader.Builder adloaderBuilder = new AdLoader.Builder(mContext.get(), unitId)
                  .withAdListener(new AdListener() {
                      @Override
                      public void onAdFailedToLoad(int errorCode) {
                          // Handle the failure by logging, altering the UI, etc.
                          Log.i(TAG, "onAdFailedToLoad " + errorCode);
                          lockFetch.set(false);
                          mFetchFailCount++;
                          mFetchingAdsCnt--;
                          ensurePrefetchAmount();
                          onAdFailed( mPrefetchedAdList.size(), errorCode, null);
                      }
                  })
                  .withNativeAdOptions(new NativeAdOptions.Builder()
                          // Methods in the NativeAdOptions.Builder class can be
                          // used here to specify individual options settings.
                          .build());
          if(getAdTypeToFetch().contains(EAdType.ADVANCED_INSTALLAPP))
              adloaderBuilder.forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener() {
                      @Override
                      public void onAppInstallAdLoaded(NativeAppInstallAd appInstallAd) {
                          onAdFetched(appInstallAd);
                      }
                  });
          if(getAdTypeToFetch().contains(EAdType.ADVANCED_CONTENT))
              adloaderBuilder.forContentAd(new NativeContentAd.OnContentAdLoadedListener() {
                      @Override
                      public void onContentAdLoaded(NativeContentAd contentAd) {
                          onAdFetched(contentAd);
                      }
                  });
  
          adLoader = adloaderBuilder.build();
      }
docs: Subscribing to the native ads events