【发布时间】:2021-09-13 12:30:29
【问题描述】:
Android(Java)方式:
最少的可重现代码:
public class MainActivity extends Activity {
private static final String TAG = "MyTag";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this);
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(this, "ca-app-pub-3940256099942544/1033173712", adRequest,
new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
Log.i(TAG, "onAdLoaded");
interstitialAd.show(MainActivity.this);
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
Log.i(TAG, loadAdError.getMessage());
}
});
}
}
我的build.gradle(app)
implementation 'com.google.android.gms:play-services-ads:20.2.0'
我的AndroidManifest.xml:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
问题(在 Android 上):
即使使用测试广告 ID 和测试应用 ID,广告也不会加载。
Flutter(飞镖)方式:
最少的可重现代码:
void main() {
WidgetsFlutterBinding.ensureInitialized();
MobileAds.instance.initialize();
runApp(MaterialApp(home: MyApp()));
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
InterstitialAd.load(
adUnitId: 'ca-app-pub-3940256099942544/1033173712',
request: AdRequest(),
adLoadCallback: InterstitialAdLoadCallback(
onAdLoaded: (ad) => ad.show(),
onAdFailedToLoad: (e) => print('Failed: $e'),
),
);
}
@override
Widget build(BuildContext context) => Container();
}
问题(在 Flutter 上):
显示了测试广告,但是当我尝试使用自己的 Ad ID 和 App ID(即使在发布模式下)时,它会失败并出现此错误。
没有广告配置。
距离我在 Admob 上创建该广告单元已经一周了。我在 Play 商店中也有一个不同的应用程序(正在显示广告),但即使我在代码中使用该应用程序的 ID,它也无法加载错误代码为 3 的广告。
PS:已经尝试this solution,但没有成功。
Android 或 Flutter 解决方案都适合我
【问题讨论】:
-
在 Android 模拟器和真实设备上的行为是否相同?
-
我身边的 android Emulator 中显示的广告,由他提供的信息测试。 @lenz
-
你修好了吗?如果你是怎么做到的?
标签: android flutter admob googlemobileads