I am trying to implement admob ads in fragment but its been a month and i am still getting error 3 ( No ads to fill ).
i have tried with new Id but still getting same error, test ads are working fine. logcat:
08-03 16:59:21.653 9892-10265/? W/AdvertisingIdClient: Error while reading from SharedPreferences
java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
at android.app.ContextImpl.checkMode(ContextImpl.java:2134)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:354)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:349)
at
com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(Unknown Source)
at com.duapps.ad.base.GoogleAdvertisingIdHelper.getAdIdNormal(GoogleAdvertisingIdHelper.java:46)
at com.duapps.ad.base.GoogleAdvertisingIdHelper.getAdId(GoogleAdvertisingIdHelper.java:33)
at com.duapps.ad.base.HttpParamsHelper.commonParams(HttpParamsHelper.java:118)
at com.duapps.ad.stats.ToolStatsCore.pushToServer(ToolStatsCore.java:370)
at com.duapps.ad.stats.ToolStatsCore.report(ToolStatsCore.java:325)
at com.duapps.ad.stats.ToolStatsCore.handleMessage(ToolStatsCore.java:217)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
08-03 16:59:24.873 26224-26246/? D/DynamitePackage: Instantiating
com.google.android.gms.ads.adshield.ChimeraAdShieldCreatorImpl
08-03 16:59:25.489 25315-25315/com.nsdeveloper.apppromotion I/Ads:
Starting ad request.
08-03 16:59:25.489 25315-25315/com.nsdeveloper.apppromotion I/Ads: Use
AdRequest.Builder.addTestDevice("10C9D896CF812C194BD949D82F766C9B")
to get test ads on this device.
08-03 16:59:25.850 25315-25332/com.nsdeveloper.apppromotion I/Ads: No fill from ad server.
08-03 16:59:25.850 25315-25315/com.nsdeveloper.apppromotion W/Ads: Failed to load ad: 3
I am implementing ads in fragment so in context i was passing getActivity() :
MobileAds.initialize(getActivity(), "xxxxxxxxxxxxxxxxxxx");
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(getActivity());
mRewardedVideoAd.setRewardedVideoAdListener(rewardAdListener);
loadRewardedAdVideo();
RewardVideoAdListener
RewardedVideoAdListener rewardAdListener = new RewardedVideoAdListener() {
@Override
public void onRewardedVideoAdLoaded() {
Toast.makeText(getActivity(),"ad is loaded",Toast.LENGTH_SHORT).show();
Log.d("ADS_SHOW","loaded");
}
@Override
public void onRewardedVideoAdOpened() {
}
@Override
public void onRewardedVideoStarted() {
}
@Override
public void onRewardedVideoAdClosed() {
loadRewardedAdVideo();
}
@Override
public void onRewarded(RewardItem rewardItem) {
int rewardPoints = rewardItem.getAmount();
int userPoints = getActivity().getSharedPreferences(PREFERENCE,0).getInt(POINTS,0) - rewardPoints;
userRef.child(POINTS).setValue(userPoints);
getActivity().getSharedPreferences(PREFERENCE,0).edit().putInt(POINTS,userPoints).commit();
}
@Override
public void onRewardedVideoAdLeftApplication() {
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
Toast.makeText(getActivity(),"No ads to show "+i,Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoCompleted() {
}
};
private void loadRewardedAdVideo(){
if(! mRewardedVideoAd.isLoaded()){
mRewardedVideoAd.loadAd("ca-app-pub-xxxxxxxxx", new AdRequest.Builder().build());
}
}