我剛接觸Android獎勵視頻廣告。我試圖用Rewarded Ads: Publishers Get StartedAndroid - 獲獎視頻廣告在應用關閉後不會再次加載
中解釋的方式創建具有獎勵視頻廣告的應用程序,該應用程序中有一個按鈕,允許用戶查看激勵視頻。加載視頻後,該按鈕即可啓用。
我第一次打開應用程序一切正常。我可以按下按鈕查看多個視頻廣告。問題在於,在關閉應用程序後,按下後退按鈕並再次打開。然後,廣告再也不會加載。我沒有收到來自RewardedVideoAdListener的消息,我把Toast放在了非常好的功能中。根本沒有反饋。我應該能夠在onRewardedVideoAdFailedToLoad中查看Toast,但即使發生這種情況也沒有。就好像代碼完全無法執行。
正如我所說,我是Android新的視頻廣告獎勵。也許我做錯了什麼,但我無法弄清楚什麼。我已經搜索了互聯網,但我找不到任何答案。有些人在加載廣告時提到了問題,但在應用程序關閉並再次打開後,沒有加載廣告的具體問題。我也檢查了這個問題,但沒有人回答: Question on StackOverflow
我在不同的手機上運行應用程序,我總是發現這個問題。
任何人都可以幫助我嗎?
對不起,我的英文。我不是母語的人。
這裏是我的主要活動代碼:
public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener {
private Button mWatchButton;
private TextView mRewardLabel;
private RewardedVideoAd mAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWatchButton = (Button)findViewById(R.id.btn_watch);
mAd = MobileAds.getRewardedVideoAdInstance(this);
mAd.setRewardedVideoAdListener(this);
loadAd();
mWatchButton.setEnabled(false);
mWatchButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if(mAd.isLoaded()){
mAd.show();
}
}
}
);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
private void loadAd(){
if(!mAd.isLoaded()){
mAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onRewardedVideoAdLoaded() {
mWatchButton.setEnabled(true);
Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdOpened() {
Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoStarted() {
Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdClosed() {
Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
mWatchButton.setEnabled(false);
loadAd();
}
@Override
public void onRewarded(RewardItem rewardItem) {
Toast.makeText(this, "onRewarded", Toast.LENGTH_SHORT).show();
mRewardLabel.setText(String.format(Locale.getDefault(), "You got %d %s!", rewardItem.getAmount(), rewardItem.getType()));
}
@Override
public void onRewardedVideoAdLeftApplication() {
Toast.makeText(this, "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
}
@Override
public void onPause() {
super.onPause();
mAd.pause(this);
}
@Override
public void onResume() {
super.onResume();
mAd.resume(this);
}
@Override
public void onDestroy() {
super.onDestroy();
mAd.destroy(this);
}
}
這裏是我的佈局代碼:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.xxxxxx.MainActivity"
tools:showIn="@layout/activity_main">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/textView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ver o anúncio"
android:id="@+id/btn_watch"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="58dp"/>
</RelativeLayout>
我收到任何警告或錯誤消息在logcat的Android Studio中。
我使用:
classpath 'com.google.gms:google-services:3.0.0'
和
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.google.firebase:firebase-ads:9.4.0'
}
apply plugin: 'com.google.gms.google-services'
謝謝!這真是一個真正的救星!儘管如此,我還是需要做一些更改才能使其發揮作用。看起來loadAd()函數中的!mAd.isLoaded()總是返回true,所以廣告從不重新初始化。奇怪...所以我的新loadAd()函數是: private void loadAd(){ // if (!mAd.isLoaded()){ mAd = null;mAd = MobileAds.getRewardedVideoAdInstance(this); mAd.setRewardedVideoAdListener(this); mAd.loadAd(「ca-app-pub-3940256099942544/5224354917」,new AdRequest.Builder()。build()); //} } –