#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();
}
}
Спасибо вам за вашу помощь.
Krisix
Ответ №1:
-
Проверьте свою учетную запись Admob, у меня была похожая проблема, но оказалось, что проблема была с моей учетной записью. (Если показываются тестовые объявления, это, вероятно, не проблема с кодом.)
-
Попробуйте добавить этот код:
@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:
Существует два типа объявлений, называемых рекламой с вознаграждением и промежуточными объявлениями с вознаграждением. Попробуйте создать другой рекламный блок и добавить соответствующие учетные данные рекламного блока.