正在显示横幅广告,但在测试横幅广告和非页内广告时,插页式广告无法正常运行

时间:2019-10-11 14:33:27

标签: firebase flutter dart admob

在我的应用程序中,我同时应用了两个测试广告(横幅广告和非页内广告),但它们均显示完美,但是当我应用真实广告时,它们均未显示。  我等了1天,但一天后才显示横幅广告,现在不显示插页式广告(我的广告ID生成的时间比我上载到Google Play商店后需要等待1天才能在应用程序中显示的时间早了1年)。 现在,如何显示非页内广告?

class Afcon extends StatefulWidget {
  final String link;
  Afcon({this.link});
  @override
  _AfconState createState() => _AfconState();
}
class _AfconState extends State<Afcon> {
  void initState() {
    super.initState();
    FirebaseAdMob.instance.initialize(appId: AppId);
    bannerAd = buildBanner()..load();
    interstitialAd = buildInterstitial()..load();
  }
  @override
  Widget build(BuildContext context) {
    bannerAd ..load()..show(
      anchorOffset: 20.0,
      anchorType: AnchorType.bottom,
    );
    Future<bool> _onBackPressed() {
      if(counter<1){
        interstitialAd
          ..load()..show();
        counter++;
      }
      else{
        bannerAd.dispose();
        Navigator.pop(context, true);
      }

    }

    return WillPopScope(

      child: WebviewScaffold(
        appBar: AppBar(
          title: Text('AFCON'),
          actions: <Widget>[
            IconButton(
                icon: Icon(Icons.open_in_new),
                onPressed: (){
                  _newPage(widget.link);
                }
            )
          ],
        ),
        initialChild: SpinKitWave(
          color: Colors.black,
          size: 30.0,
        ),
        hidden: true,
        url: widget.link,
      ),
      onWillPop: _onBackPressed,
    );
  }
}
_newPage(String link) async {
  if (await canLaunch(link)) {
    await launch(link);
  } else {
    throw 'Could not launch $link';
  }
}

此处已初始化功能以展示广告

import 'package:firebase_admob/firebase_admob.dart';

final AppId='ca-app-pub-**********************';
final InterstitialAdsUnit='ca-app-pub-**********************';
final BannerAdsUnit='ca-app-pub-**********************';

int counter=0;
 final MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
  keywords: ['Games', 'Puzzles'],
);
BannerAd bannerAd;
InterstitialAd interstitialAd;
RewardedVideoAd rewardedVideoAd;

BannerAd buildBanner() {
  return BannerAd(
      adUnitId: BannerAdsUnit,
      size: AdSize.banner,
      listener: (MobileAdEvent event) {
        print(event);
      });
}
InterstitialAd buildInterstitial() {
  return InterstitialAd(
      adUnitId: InterstitialAdsUnit,
      targetingInfo: targetingInfo,
      listener: (MobileAdEvent event) {
        if (event == MobileAdEvent.failedToLoad) {
          interstitialAd..load();
        } else if (event == MobileAdEvent.closed) {
          interstitialAd = buildInterstitial()..load();
        }
        print(event);
      });
}

3 个答案:

答案 0 :(得分:1)

  1. 从不测试您自己的广告,始终使用测试广告单元,

  2. 如果您创建新的admob应用ID,则这些广告单元可能要花一些时间才能生效,因此不会显示广告。

因此,如果您运行测试广告单元,那么它是否可以在真实设备中使用?

答案 1 :(得分:1)

您现在已经完成了所有工作,现在需要检查插页式广告单元ID。我确定您的广告单元ID有问题。去做一些新的测试ID,并在您的应用程序上实现它可以正常工作。应用新的广告单元后,请稍等片刻。

答案 2 :(得分:1)

您是否在调试版本的apk上测试真实的广告?如是, 请尝试在带有签名版本apk的真实设备中进行测试。我已经看过很多次真正的广告都没有在apk的调试版本中显示了。