Reward Ads AdMob wird nicht ausgeliefert.

wer112

Top Contributor
Ich habe mich bei AdMob angemeldet und habe mit hilfe des YT einen Banner problemlos erstellt(App stürtzt bei View.Gone).
Nun wollte ich eine Prämium Ads machen, wo man 10 Videos anschaut für einen Schlüssel.
Habe des wegen YT angeschaut und zu 100% nachgemacht.
Leider Wird keine Testanzeige angezeigt.
Ich brauche Hilfe und möchte Verstehen wo das Problem ist.

AdMob start: https://developers.google.com/admob/android/quick-start?hl=de

Premium: https://developers.google.com/admob/android/rewarded?hl=de

Der erste Versuch (Macht wenig sinn, wo aber in YT klappt):

Java:
package ;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.gms.ads.AdError;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.FullScreenContentCallback;
import com.google.android.gms.ads.LoadAdError;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.OnUserEarnedRewardListener;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
import com.google.android.gms.ads.rewarded.RewardItem;
import com.google.android.gms.ads.rewarded.RewardedAd;
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback;

import org.json.JSONException;
import org.json.JSONObject;

public class Ads extends Fragment {

    TextView keyText;
    Integer keys_menge = 0;

    Integer zähler = 0;

    ImageView play;

    public static String REWARD_AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917";

    private RewardedAd mrewardedAd;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        View fragmentlayout_ads = inflater.inflate(R.layout.activity_ads, null);
        return fragmentlayout_ads;
    }

    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
        // hier hast du deine View dein Layout

        MobileAds.initialize(getActivity(), new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        keyText = (TextView)view.findViewById(R.id.key_ads_textView);
        play = (ImageView)view.findViewById(R.id.play_imageView);

        play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showRewardAds();
            }
        });

        CoinImport();

    }

    private void CoinImport(){

        RequestQueue queue = Volley.newRequestQueue(getActivity());

        String url = "";

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {

                Log.e("Virtuell", response.toString());

                try {

                    keys_menge = response.getInt("keys");


                    keyText.setText(keys_menge + "");


                } catch (JSONException e) {
                    throw new RuntimeException(e);
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
                alertDialog.setTitle("Volly Error");
                alertDialog.setMessage(error.toString());
                alertDialog.setCancelable(false);
                alertDialog.setButton(DialogInterface.BUTTON_NEUTRAL, "Okay", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        alertDialog.dismiss();
                    }
                });
                alertDialog.show();

            }
        });

        queue.add(jsonObjectRequest);


    }

    private void showRewardAds(){

        if (mrewardedAd != null) {
            Activity activityContext = getActivity();
            mrewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
                @Override
                public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
                    // Handle the reward.
                    Log.d("Ads", "The user earned the reward.");
                    int rewardAmount = rewardItem.getAmount();
                    String rewardType = rewardItem.getType();
                }
            });

          
        } else {
            Log.d("Ads", "The rewarded ad wasn't ready yet.");
        }
    }

    private void Play(){

        AdRequest adRequest = new AdRequest.Builder().build();
        RewardedAd.load(getActivity(), REWARD_AD_UNIT_ID, adRequest, new RewardedAdLoadCallback() {
            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                super.onAdFailedToLoad(loadAdError);
                mrewardedAd = null;
            }

            @Override
            public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
                super.onAdLoaded(rewardedAd);

                mrewardedAd = rewardedAd;

                rewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
                    @Override
                    public void onAdClicked() {
                        super.onAdClicked();
                    }

                    @Override
                    public void onAdDismissedFullScreenContent() {
                        super.onAdDismissedFullScreenContent();
                    }

                    @Override
                    public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                        super.onAdFailedToShowFullScreenContent(adError);
                    }

                    @Override
                    public void onAdImpression() {
                        super.onAdImpression();
                    }

                    @Override
                    public void onAdShowedFullScreenContent() {
                        super.onAdShowedFullScreenContent();
                    }
                });
            }
        });
    }
}

der zweite Versuch(Wo es mehr sinn macht):

Java:
package ;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.gms.ads.AdError;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.FullScreenContentCallback;
import com.google.android.gms.ads.LoadAdError;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.OnUserEarnedRewardListener;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
import com.google.android.gms.ads.rewarded.RewardItem;
import com.google.android.gms.ads.rewarded.RewardedAd;
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback;

import org.json.JSONException;
import org.json.JSONObject;

public class Ads extends Fragment {

    TextView keyText;
    Integer keys_menge = 0;

    Integer zähler = 0;

    ImageView play;

    public static String REWARD_AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917";

    private RewardedAd mrewardedAd;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        View fragmentlayout_ads = inflater.inflate(R.layout.activity_ads, null);
        return fragmentlayout_ads;
    }

    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
        // hier hast du deine View dein Layout

        MobileAds.initialize(getActivity(), new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        keyText = (TextView)view.findViewById(R.id.key_ads_textView);
        play = (ImageView)view.findViewById(R.id.play_imageView);

        play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showRewardAds();
            }
        });

        CoinImport();

    }

    private void CoinImport(){

        RequestQueue queue = Volley.newRequestQueue(getActivity());

        String url = "";

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {

                Log.e("Virtuell", response.toString());

                try {

                    keys_menge = response.getInt("keys");


                    keyText.setText(keys_menge + "");


                } catch (JSONException e) {
                    throw new RuntimeException(e);
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
                alertDialog.setTitle("Volly Error");
                alertDialog.setMessage(error.toString());
                alertDialog.setCancelable(false);
                alertDialog.setButton(DialogInterface.BUTTON_NEUTRAL, "Okay", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        alertDialog.dismiss();
                    }
                });
                alertDialog.show();

            }
        });

        queue.add(jsonObjectRequest);


    }

    private void showRewardAds(){

        if (mrewardedAd != null) {
            Activity activityContext = getActivity();
            mrewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
                @Override
                public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
                    // Handle the reward.
                    Log.d("Ads", "The user earned the reward.");
                    int rewardAmount = rewardItem.getAmount();
                    String rewardType = rewardItem.getType();
                }
            });

            mrewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
                @Override
                public void onAdClicked() {
                    super.onAdClicked();
                }

                @Override
                public void onAdDismissedFullScreenContent() {
                    super.onAdDismissedFullScreenContent();
                    Play();
                }

                @Override
                public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                    super.onAdFailedToShowFullScreenContent(adError);
                }

                @Override
                public void onAdImpression() {
                    super.onAdImpression();
                }

                @Override
                public void onAdShowedFullScreenContent() {
                    super.onAdShowedFullScreenContent();
                }
            });
        } else {
            Log.d("Ads", "The rewarded ad wasn't ready yet.");
        }
    }

    private void Play(){

        AdRequest adRequest = new AdRequest.Builder().build();
        RewardedAd.load(getActivity(), REWARD_AD_UNIT_ID, adRequest, new RewardedAdLoadCallback() {
            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                super.onAdFailedToLoad(loadAdError);
                mrewardedAd = null;
            }

            @Override
            public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
                super.onAdLoaded(rewardedAd);

                mrewardedAd = rewardedAd;

                
            }
        });
    }
}

Ich hoffe ihr könnt mir Helfen.

Danke im Vorraus.
 

Jw456

Top Contributor
Ich glaube das mit AdMod geht erst wenn die App auch im, Google Play Store ist .
Und auch da dauert es gewöhnlich einige zeit bis da Werbung kommt.

Zum Test kannst du die Test IDs benutzen.

Mehr kann ich zu dem Thema nicht sagen

 
Zuletzt bearbeitet:

wer112

Top Contributor
Ich glaube das mit AdMod geht erst wenn die App auch im, Google Play Store ist .
Und auch da dauert es gewöhnlich einige zeit bis da Werbung kommt.

Zum Test kannst du die Test IDs benutzen.

Mehr kann ich zu dem Thema nicht sagen

ICh verwende ja die Test ID. Da soll das eigentlich sofort anzeigen können.
 

Jw456

Top Contributor
public static String REWARD_AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917";
Ich habe mich bei AdMob angemeldet und habe mit hilfe des YT einen Banner problemlos erstellt(App stürtzt bei View.Gone).
die IDs passen nicht zusammen
das ist nicht die Banner ID


Die View sollte schon die ganze Zeit die AdMob läuft sichtbar sein.
Dein code und das was du selber gesucht hast aus der Google Doku stimmt in einigen Punkten nicht überein.

Code für den Banner ist der https://developers.google.com/admob/android/banner
 
Zuletzt bearbeitet:

wer112

Top Contributor
die IDs passen nicht zusammen
das ist nicht die Banner ID


Die View sollte schon die ganze Zeit die AdMob läuft sichtbar sein.
Dein code und das was du selber gesucht hast aus der Google Doku stimmt in einigen Punkten nicht überein.

Code für den Banner ist der https://developers.google.com/admob/android/banner
Der Banner wird ja angezeigt. Das ist die Test ID für das Reward Anzeige, habe es 1:1 nachgemacht...
 

Jw456

Top Contributor
Beide Codes können nicht laufen.
In beiden wird deine Play Metoden nicht aufgerufen.
Dies soll ja bei dir der Startpunkt das Init von admob sein.

Ende
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Google Admob Ad wird nicht geladen und App stürzt ab Android & Cross-Platform Mobile Apps 1
C Consent für Admob mit ump / funding choices Android & Cross-Platform Mobile Apps 6
T Android AdMob Geld pro Klick oder Seitenaufruf? Android & Cross-Platform Mobile Apps 1
B AdMob im Projekt einbinden? Android & Cross-Platform Mobile Apps 3
J Spinner wird nicht aktualisiert Android & Cross-Platform Mobile Apps 6
Naxon89 Duplicate class kotlin - und dies ohne das es angewendet wird Android & Cross-Platform Mobile Apps 1
ImageView wird nicht angezeigt Android & Cross-Platform Mobile Apps 4
W Bildschirm Nutzung Überwachen der App Nutzer ink. was angeklickt wird Android & Cross-Platform Mobile Apps 35
N XY-Plottet keine Daten obwohl Funktion ausgeführt wird Android & Cross-Platform Mobile Apps 4
K Null-Pointer-Exception in ListView - wird über Datenbank gefüllt Android & Cross-Platform Mobile Apps 1
R Android Do not disturb: Sound wird nicht abgespielt Android & Cross-Platform Mobile Apps 2
M Paper DB wird in Android Studio nicht erkannt Android & Cross-Platform Mobile Apps 7
R Audio wird nur 1 Mal abgespielt Android & Cross-Platform Mobile Apps 2
A GraphView => X- und Y-Achse wird nicht angezeigt Android & Cross-Platform Mobile Apps 5
A jpg wird im Android Studio nicht akzeptiert Android & Cross-Platform Mobile Apps 3
Arif Android Radiobutton wird nicht deaktiviert Android & Cross-Platform Mobile Apps 1
Arif Android Canvas wird nicht gezeichnet? Android & Cross-Platform Mobile Apps 0
J Notification wird nicht angezeigt wenn App nicht offen ist. Android & Cross-Platform Mobile Apps 6
M TypedArray-Resource wird falsch geladen Android & Cross-Platform Mobile Apps 7
W Preview wird nicht korrekt angezeigt Android & Cross-Platform Mobile Apps 0
B Profilpic wird nach anmeldung nicht angezeigt. Android & Cross-Platform Mobile Apps 2
K Methode wird nicht gefunden Android & Cross-Platform Mobile Apps 1
J Kamera - Foto wird nicht gespeichert Android & Cross-Platform Mobile Apps 2
V Android Wird mein Vorhaben funktionieren? (Apk Datei decompilieren, bearbeiten, compilieren) Android & Cross-Platform Mobile Apps 2
G App wird nach Installation auf Smartphone beendet Android & Cross-Platform Mobile Apps 1
L Dialog anzeigen wenn auf Button gedrückt wird. Android & Cross-Platform Mobile Apps 4
S Android neue Version des Programms wird nicht in Emulator geladen Android & Cross-Platform Mobile Apps 1
O Android Switch Widget wird nicht angezeigt Android & Cross-Platform Mobile Apps 1
M Android ListView wird nicht dargestellt Android & Cross-Platform Mobile Apps 2
N PriceScannerApp: warum wird nach dem Scannen Display gleich schwarz? Android & Cross-Platform Mobile Apps 4
P Herausfinden, welches Fragment gerade angezeigt wird. Android & Cross-Platform Mobile Apps 1
M Android Nur erste Zeile wird vom Server empfangen Android & Cross-Platform Mobile Apps 0
A App wird bei start des Timers beendet Android & Cross-Platform Mobile Apps 1
A Wieso wird die App beendet ??? Android & Cross-Platform Mobile Apps 2
B Alle Daten gehen verloren, wenn die Displaysperre aktiviert wird? Android & Cross-Platform Mobile Apps 21
P trotz invalidate() wird onDraw() nicht aufgerufen Android & Cross-Platform Mobile Apps 15
W XML Layout: wann wird geladen? Android & Cross-Platform Mobile Apps 10
K Android Temperaturconverter, R.id.element wird nicht gefunden Android & Cross-Platform Mobile Apps 20
A onDraw wird nicht aufgerufen Android & Cross-Platform Mobile Apps 14
A Android Dialog wird nicht sofort angezeigt Android & Cross-Platform Mobile Apps 12
W ImageView wird nicht angezeigt Android & Cross-Platform Mobile Apps 19
T Android: ListView-Adapter: Adapter wird ständig aufgerufen Android & Cross-Platform Mobile Apps 2
F Android Datenbank upgrade wird nicht durchgeführt Android & Cross-Platform Mobile Apps 2
F Android R.raw wird nicht gefunden Android & Cross-Platform Mobile Apps 5
P ID wird nicht erzeugt Android & Cross-Platform Mobile Apps 2
C Problem Device/Emulator wird nicht erkannt Android & Cross-Platform Mobile Apps 3
R Zeichen-Codierung in (SMS) TextMessage, "_" wird § Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen

Neue Themen


Oben