You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为PWA Builder生成的TWA应用集成AdMob:找不到AppCompatActivity的问题

为TWA应用集成AdMob的正确步骤

TWA(Trusted Web Activity)基于Chrome Custom Tab加载PWA,和普通Android App结构不同,没有默认的AppCompatActivity,你可以通过以下步骤完成AdMob集成:

1. 添加AdMob依赖

在Module级别的build.gradle(通常是app/build.gradle)中添加AdMob SDK依赖:

dependencies {
    implementation 'com.google.android.gms:play-services-ads:22.6.0'
}

2. 配置AdMob应用ID

在AndroidManifest.xml的<application>标签内添加元数据,填入你的AdMob应用ID:

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="你的AdMob应用ID"/>

3. 修改TWA启动类以支持AdMob

Bubblewrap生成的TWA项目默认入口是TwaLauncherActivity,它继承自普通Activity,你需要修改它继承AppCompatActivity,并在这里处理广告逻辑:

修改TwaLauncherActivity.java

找到main/java/app.app-name.twa/TwaLauncherActivity.java,按以下方式调整:

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;
import com.google.android.gms.ads.FullScreenContentCallback;
import com.google.android.gms.ads.AdError;
import androidx.appcompat.app.AppCompatActivity;

public class TwaLauncherActivity extends AppCompatActivity {
    private InterstitialAd mInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // 初始化AdMob SDK
        MobileAds.initialize(this, initializationStatus -> {});

        // 加载插屏广告
        loadInterstitialAd();
    }

    private void loadInterstitialAd() {
        AdRequest adRequest = new AdRequest.Builder().build();
        InterstitialAd.load(this, "你的插屏广告单元ID", adRequest,
            new InterstitialAdLoadCallback() {
                @Override
                public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                    mInterstitialAd = interstitialAd;
                    // 设置广告关闭回调,关闭后启动TWA
                    mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
                        @Override
                        public void onAdDismissedFullScreenContent() {
                            launchTwa();
                        }

                        @Override
                        public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                            launchTwa();
                        }
                    });
                    // 展示广告
                    mInterstitialAd.show(TwaLauncherActivity.this);
                }

                @Override
                public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                    mInterstitialAd = null;
                    // 广告加载失败,直接启动TWA
                    launchTwa();
                }
            });
    }

    private void launchTwa() {
        // 执行原有TWA启动逻辑
        TwaLauncher launcher = TwaLauncher.create(this);
        launcher.launch(getLaunchingUrl());
        finish();
    }
}

4. 配置Activity兼容主题

在AndroidManifest.xml中,给TwaLauncherActivity设置兼容AppCompatActivity的主题,比如:

<activity
    android:name=".TwaLauncherActivity"
    android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- 保留原有配置项 -->
</activity>

关键注意事项

  • 优先测试:使用AdMob官方提供的测试广告单元ID验证功能,避免因账号审核、广告填充问题导致广告不显示
  • 不要在Application类处理广告:广告依赖Activity生命周期,Application类仅用于全局初始化,无法承载广告展示逻辑
  • 版本兼容:确保项目的compileSdkVersion和targetSdkVersion至少为33,与AdMob SDK版本匹配

内容的提问来源于stack exchange,提问作者PedritoG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:38:20