【问题标题】:Admob real ads not showing on flutter app but java app worksAdmob 真实广告未显示在颤振应用程序上,但 Java 应用程序有效
【发布时间】:2021-05-22 13:30:47
【问题描述】:

首先,我使用 java 和 admob 创建了 android 应用程序,真实的广告显示完美。然后我使用颤振创建另一个 android 应用程序,我首先运行测试广告并且效果很好。但是后来我使用了相同的单元 ID 和应用 ID,但真实的广告没有显示在颤振应用上。

main.dart:

import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:provider/provider.dart';

import 'ad_state.dart';
import 'home.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  final initFuture = MobileAds.instance.initialize();
  final adState = AdState(initFuture);

  runApp(
    Provider.value(
      value: adState,
      builder: (context, child) => MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      home: HomePage(),
    );
  }
}

home.dart

import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:provider/provider.dart';

import 'ad_state.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  BannerAd banner;

  @override
  void initState() {
    super.initState();
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();

    final adState = Provider.of<AdState>(context);
    adState.initialization.then((status) {
      setState(() {
        banner = BannerAd(
          size: AdSize.banner,
          adUnitId: adState.bannerAdUnitId,
          listener: adState.bannerAdListener,
          request: AdRequest(),
        )..load();
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Admob"),
      ),
      body: Container(
        child: ListView(
          children: [
            Text("Hello World"),
            if (banner == null)
              SizedBox(height: 50)
            else
              Container(
                height: 50,
                child: AdWidget(
                  ad: banner,
                ),
              ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          print("Hello World");
        },
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

ad_state.dart:

import 'package:google_mobile_ads/google_mobile_ads.dart';

class AdState {
  Future<InitializationStatus> initialization;

  AdState(this.initialization);

  String get bannerAdUnitId => '<Banner_Unit_ID>';

  BannerAdListener get bannerAdListener => _adListener;

  BannerAdListener _adListener = BannerAdListener(
    // Called when an ad is successfully received.
    onAdLoaded: (Ad ad) => print('Ad loaded.'),
    // Called when an ad request failed.
    onAdFailedToLoad: (Ad ad, LoadAdError error) {
      // Dispose the ad here to free resources.
      ad.dispose();
      print('Ad failed to load: $error');
    },
    // Called when an ad opens an overlay that covers the screen.
    onAdOpened: (Ad ad) => print('Ad opened.'),
    // Called when an ad removes an overlay that covers the screen.
    onAdClosed: (Ad ad) => print('Ad closed.'),
    // Called when an impression occurs on the ad.
    onAdImpression: (Ad ad) => print('Ad impression.'),
  );
}

以下错误显示: 广告加载失败:LoadAdError(代码:3,域:com.google.android.gms.ads,消息:无广告配置,responseInfo:ResponseInfo(responseId:null,mediationAdapterClassName:,adapterResponses:[]))

【问题讨论】:

  • 显示一些代码。你在哪里运行应用、物理设备、模拟器?
  • 我在物理设备上运行。

标签: android flutter admob


【解决方案1】:

我已经在 Play 商店上传了应用程序。上传到 Play 商店后,广告显示成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多