实施谷歌广告后,该应用程序在启动时崩溃。我用的是ios模拟器。广告在具有相同代码实现的其他应用程序上运行良好,但在此应用程序上则不然。其他应用程序即使使用原始广告单元 ID 也会显示测试广告。 插页式广告和奖励广告运行良好,只有横幅广告出现了问题。
错误: 要在此设备上获取测试广告,请设置: Objective-C GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers = @[ kGADSimulatorID ]; 迅速 GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [ kGADSimulatorID ]
代码: AdHelper 类
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'dart:io';
class AdHelper {
// Android Ad Units
static String _bannerAd_And = 'ca-app-pub-3884661730977437/3917788070';
static String _interAd_And = 'ca-app-pub-3884661730977437/1291624734';
static String _bannerAdTest_And = 'ca-app-pub-3940256099942544/6300978111';
static String _interAdTest_And = 'ca-app-pub-3940256099942544/1033173712';
// iOS Ad Units
static String _bannerAd_iOS = 'ca-app-pub-3884661730977437/4131225272';
static String _interAd_iOS = 'ca-app-pub-3884661730977437/6845018522';
static String _bannerAdTest_iOS = 'ca-app-pub-3940256099942544/2934735716';
static String _interAdTest_iOS = 'ca-app-pub-3940256099942544/4411468910';
// FN returns Banner AD Unit Id
static String get bannerAdUnitId {
if (Platform.isAndroid) {
return _bannerAdTest_And;
} else if (Platform.isIOS) {
return _bannerAdTest_iOS;
} else {
throw UnsupportedError('Unsupported platform');
}
}
// FN returns Interstitial Ad Unit Id
static String get interAdUnitId {
if (Platform.isAndroid) {
return _interAdTest_And;
} else if (Platform.isIOS) {
return _interAdTest_iOS;
} else {
throw UnsupportedError('Unsupported platform');
}
}
}
广告控制器
import 'package:get/get.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'AdMob_Helper.dart';
class AdMobController extends GetxController {
///------------------ Init
@override
void onInit() {
getBannerAd();
super.onInit();
}
///------------------ Dispose
@override
void onClose() {
bannerAd.dispose();
super.onClose();
}
late BannerAd bannerAd;
bool isBannerLoaded = false;
//
void getBannerAd() {
bannerAd = BannerAd(
adUnitId: AdHelper.bannerAdUnitId,
size: AdSize.banner,
request: AdRequest(),
listener: BannerAdListener(
onAdLoaded: (_) {
isBannerLoaded = true;
update();
},
onAdFailedToLoad: (ad, error) {
// Releases an ad resource when it fails to load
ad.dispose();
print('Ad load failed (code=${error.code} message=${error.message})');
},
),
);
// TODO: Load an ad
bannerAd.load();
update();
}
}
我知道我参加聚会迟到了,但这可能会对将来的某人有所帮助。
就我而言,我把
meta-data
放在了错误的位置。
我的应用程序也在出现白屏(可能是闪屏)后崩溃。我打开 android studio 并查看
logcat
,这表明我的 google_mobile_ads 未正确初始化。
我已将
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxx~xxxxxx" />
放入清单文件中的 <activity>
内,而它必须位于 <application>
内。
简而言之,你的清单文件应该如下所示
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<application
android:label="label"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
...
</activity>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx" />
</application>
</manifest>
如果您找到相关链接,请浏览此内容, Flutter 应用程序在尝试加载插页式广告时崩溃