Тестовые объявления с вознаграждением показываются, но не реальные

#java #android-studio #admob #ads

#java #android-studio #admob #реклама

Вопрос:

У меня возникли некоторые проблемы с внедрением вознагражденных объявлений (с использованием AdMob) в моем приложении, созданном на Android Studio. Когда я ввожу идентификатор тестового приложения и БЛОК тестовых объявлений, это работает отлично, и тестовые объявления отображаются, но когда я пытаюсь ввести свой собственный идентификатор приложения и свой собственный блок объявлений, объявления больше не загружаются.

Я ждал больше недели после создания своей учетной записи admob, поэтому для меня проблема не связана с этим.

Мне было интересно, не могли бы вы мне помочь.

AndroidManifest.xml :

  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="(hide)">
    <!-- Internet Permission -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-1726769558644129~3661017334" />

        <activity
            android:name=".SpashScreenActivity"
            android:theme="@style/SplashScreenTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".LoginActivity" />
        <activity android:name=".DashboardActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name=".RegisterActivity" />
        <activity android:name=".Main" />
        
    </application>

</manifest>
  

HomeFragment.java :

 

/**
 * A simple {@link Fragment} subclass.
 */
public class HomeFragment extends Fragment implements RewardedVideoAdListener{

    public HomeFragment() {
        // Required empty public constructor
    }

  

    //init view
    ImageButton addCoinsBtn;
    
    
    //AdRewarded
    private RewardedVideoAd mAd;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view =inflater.inflate(R.layout.fragment_home, container, false);

        MobileAds.initialize(getActivity(), "ca-app-pub-1726769558644129~3661017334");

              
        // Use an activity context to get the rewarded video instance
        mAd = MobileAds.getRewardedVideoAdInstance(getActivity());
        mAd.setRewardedVideoAdListener(this);
        loadRewardedVideoAd();



        addCoinsBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(mAd.isLoaded())
                {
                    mAd.show();
                    addCoinsBtn.setVisibility(View.INVISIBLE);
                    waitAdLL.setVisibility(View.VISIBLE);
                }

            }


        });

        


        return view;

    }

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


    // Required to reward the user.
    @Override
    public void onRewarded(RewardItem reward) {

        // Reward the user.

       
    }

    // The following listener methods are optional.
    @Override
    public void onRewardedVideoAdLeftApplication() {
        Toast.makeText(getActivity(), "onRewardedVideoAdLeftApplication",Toast.LENGTH_SHORT).show();

    }



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

    @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 onRewardedVideoAdFailedToLoad(int errorCode) {
        Toast.makeText(getActivity(), "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
        loadRewardedVideoAd();
    }

    @Override
    public void onRewardedVideoCompleted() {

    }

    @Override
    public void onResume() {
        mAd.resume(getActivity());
        super.onResume();
    }
    @Override
    public void onPause() {
        mAd.pause(getActivity());
        super.onPause();
    }
    @Override
    public void onDestroy() {
        mAd.destroy(getActivity());
        super.onDestroy();
    }



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



}

  

Информация о моем Admob

Спасибо вам за вашу помощь.

Krisix

Ответ №1:

  1. Проверьте свою учетную запись Admob, у меня была похожая проблема, но оказалось, что проблема была с моей учетной записью. (Если показываются тестовые объявления, это, вероятно, не проблема с кодом.)

  2. Попробуйте добавить этот код:

      @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                          Bundle savedInstanceState) {
     // Inflate the layout for this fragment
     View view =inflater.inflate(R.layout.fragment_home, container, false);
    
    MobileAds.initialize(this, new OnInitializationCompleteListener() {
     @Override
     public void onInitializationComplete(InitializationStatus initializationStatus) {}
    });
    
    // Use an activity context to get the rewarded video instance
     mAd = MobileAds.getRewardedVideoAdInstance(getActivity());
     mAd.setRewardedVideoAdListener(this);
     loadRewardedVideoAd();
    
    // Your code
     ...
      

Комментарии:

1. Спасибо за улучшения! Но какие могут быть проблемы с моей учетной записью Admob? Какие у вас были проблемы с вашей учетной записью?

2. Моя учетная запись была продублирована, я использовал AdMob с тем же номером банковского счета, что вызвало проблему с отображением рекламы.

Ответ №2:

Существует два типа объявлений, называемых рекламой с вознаграждением и промежуточными объявлениями с вознаграждением. Попробуйте создать другой рекламный блок и добавить соответствующие учетные данные рекламного блока.