Несколько типов вознаграждений за один и тот же идентификатор объявления - PullRequest
0 голосов
/ 19 мая 2019

В настоящее время мы создаем приложение, которое включает в себя видео систему с вознаграждением от AdMob.Приложение имеет один MainActivity и на нем есть фрагменты.Каждый фрагмент имеет кнопку, каждый фрагмент реализует «RewardedVideoAdListener».Когда нажимаются кнопки, загруженное видео загружается и показывается.Дело в том, что каждая кнопка должна иметь различные типы вознаграждений.

Оба фрагмента выглядят так;

    public class FragmentShop extends Fragment implements RewardedVideoAdListener
    {
    private RewardedVideoAd rewardedVideoAd;
    private Button rewardButton;

    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    rewardButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if(rewardedVideoAd.isLoaded()){
                    rewardedVideoAd.show();
                    rewardButton.setVisibility(View.INVISIBLE);
                }
                else {
                    Toast.makeText(view.getContext(),"Try again!",Toast.LENGTH_SHORT).show();
                    loadRewardedVideoAd();
                }
            }
        });
    }
private void loadRewardedVideoAd() {
        rewardedVideoAd.loadAd("---", //there is our key
                new AdRequest.Builder().build());
    }

 @Override
    public void onRewarded(RewardItem rewardItem) {
        //Some database actions.
        loadRewardedVideoAd();
    }
}

Проблема в том, что независимо от того, какую кнопку мы нажимаем, запускается только функция onRewarded (), которая находится во фрагменте № 2. Так какмы можем построить структуру, в которой каждый фрагмент выполняет свою собственную функцию onRewarded ().Должны ли мы сначала использовать onRewardedVideoCompleted ()?

1 Ответ

0 голосов
/ 19 мая 2019

Применить это:

private RewardedVideoAd mRewardedVideoAd;

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        rootView = inflater.inflate(R.layout.fragment_main, container, false);
        mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(getContext());
        mRewardedVideoAd.setRewardedVideoAdListener(rewardedVideoAdListener);

        rewardButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // todo
                loadRewardedVideoAd();
            }
        });
        return rootView;
    }

    RewardedVideoAdListener rewardedVideoAdListener = new RewardedVideoAdListener() {
        @Override
        public void onRewardedVideoAdLoaded() {
            Toast.makeText(getActivity(), "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onRewardedVideoAdOpened() {
            Toast.makeText(getActivity(), "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onRewardedVideoStarted() {
            Toast.makeText(getActivity(), "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onRewardedVideoAdClosed() {
            Toast.makeText(getActivity(), "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onRewarded(RewardItem reward) {
            Toast.makeText(getActivity(), getString(R.string.on_rewarded_video) + " " +  reward.getAmount() + " " + reward.getType(), Toast.LENGTH_LONG).show();
            // Reward the user.
        }

        @Override
        public void onRewardedVideoAdLeftApplication() {
            Toast.makeText(getActivity(), "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onRewardedVideoAdFailedToLoad(int i) {
            Toast.makeText(getActivity(), "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
        }
    };

    private void loadRewardedVideoAd() {
        mRewardedVideoAd.loadAd("ca-app-pub-#################/##########",
                new AdRequest.Builder().build());
    }
...