2015-01-31 2 views
2

У меня есть ViewPager с слайдами. После каждого пятого слайда я хочу показать полноэкранное объявление. Я использую Flurry для рекламного сервиса. Я успешно добавил рекламу, и они работают.Объявление в полноэкранном режиме ViewPager

Задача: Объявления загружаются слишком медленно. Когда пользователь переключается на 5-й слайд, для объявления требуется около 3-4 секунд.

Мой подход:

  1. Я пытался поставить выборки код в onStart метод для загрузки быстрее, но тогда объявления просто не появляются больше.
  2. Каждый раз, когда viewpager меняет слайд, фрагмент, содержащий объявление, уничтожается, а затем на новом слайде он должен повторно подключаться к Flurry. Я попытался поместить соединение в основное действие, которое запускает приложение, чтобы подключиться раньше, но тогда соединение не может быть замечено в фрагменте.

    public class CardFragment extends Fragment { 
    
        private final String kLogTag = "FlurryAdServingAPI"; 
    
        Card mCard; 
        TextView mTextView; 
        private ViewPager mViewPager; 
        private MenuItem mAddToFavorite; 
        private AudioPlayer mPlayer = new AudioPlayer(); 
    
        private FlurryAdInterstitial mFlurryAdInterstitial = null; 
        private String mAdSpaceName = "12thcard"; 
        private FrameLayout mAdLayout; 
    
    
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setHasOptionsMenu(true); 
         mCard = (Card) getArguments().getSerializable(EXTRA_CARD_ID); 
         GameManager.get(getActivity()).changeCardTimesDisplayed(mCard); 
         mViewPager = (ViewPager) getActivity().findViewById(R.id.viewPager); 
         mFlurryAdInterstitial = new FlurryAdInterstitial(getActivity(), mAdSpaceName); 
         mFlurryAdInterstitial.setListener(interstitialAdListener); 
    
        } 
    
        @Override 
        public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 
         View v = inflater.inflate(R.layout.fragment_card, parent, false); 
         mAdLayout = (FrameLayout)v.findViewById(R.id.bannerframe); 
         if(mViewPager.getCurrentItem()%5 == 0) { 
          Log.i("FluryTag", "Show ad"); 
          FlurryAds.fetchAd(getActivity(), mAdSpaceName, mAdLayout, FlurryAdSize.FULLSCREEN); 
          FlurryAds.displayAd(getActivity(), mAdSpaceName, mAdLayout); 
         } 
         mTextView = (TextView) v.findViewById(R.id.questionText); 
         mTextView.setText(mCard.getText()); 
         return v; 
        } 
    
        @Override 
        public void onDestroy() { 
         super.onDestroy(); 
         mPlayer.stop(); 
        } 
    
        public void onStart() { 
         super.onStart(); 
         try { 
          Log.d(kLogTag, "onStartSession: "+ AppConstants.FLURRY_API_KEY); 
          FlurryAgent.onStartSession(getActivity(), AppConstants.FLURRY_API_KEY); 
          mFlurryAdInterstitial.fetchAd(); 
         } catch (Exception e) { 
          Log.e(kLogTag, e.getMessage()); 
         } 
        } 
        public void onStop() { 
         super.onStop(); 
         FlurryAgent.onEndSession(getActivity()); 
         mFlurryAdInterstitial.destroy(); 
         Log.d(kLogTag, "onEndSession"); 
        } 
    } 
    

    FlurryAdinterstitialListener

    FlurryAdInterstitialListener interstitialAdListener = new FlurryAdInterstitialListener() { 
    
         @Override 
         public void onFetched(FlurryAdInterstitial adInterstitial) { 
          Log.d(kLogTag, "onFetched(" + adInterstitial + ")"); 
          adInterstitial.displayAd(); 
         } 
         @Override 
         public void onError(FlurryAdInterstitial adInterstitial, FlurryAdErrorType adErrorType, int errorCode) { 
          Log.d(kLogTag, "onError(" + adInterstitial + ")"); 
          Log.d(kLogTag, "onError adErrorType(" + adErrorType + ")"); 
          Log.d(kLogTag, "onError errorCode(" + errorCode + ")"); 
          adInterstitial.destroy(); 
         } 
         //.. 
         //the remainder of listener callbacks 
        }; 
    

Идеи: я иду в неправильном направлении? Я имею в виду природу ViewPager - создавать и отбрасывать фрагменты, и если каждому фрагменту требуется время для подключения к сервису, выберите объявление, а затем отобразите его. Возможно, я не должен показывать рекламу в ViewPager.

ответ

1

Если кому-то интересно. Я не смог решить проблему с Flurry. В конце концов, я переключился на AdMob, чтобы решить медленную загрузку рекламы.

+0

Я хочу сделать то же самое. Можете ли вы поделиться своим кодом, как вы показали объявление после 5 прокрутки в viewpager. –