【发布时间】: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:[]))
【问题讨论】:
-
显示一些代码。你在哪里运行应用、物理设备、模拟器?
-
我在物理设备上运行。