我一直在我的 flutter 应用程序上实施横幅广告,我设法成功显示横幅广告,但我的应用程序运行速度非常慢,然后崩溃并关闭。我一直在寻找解决此问题的方法很多,但似乎找不到任何解决方案,尽管很多人都遇到了同样的问题。如果你们能帮助我,我将不胜感激。
我的代码如下:
adhelper.dart
import 'dart:io';
import 'package:google_mobile_ads/google_mobile_ads.dart';
class AdHelper {
Future<InitializationStatus> initialization;
AdHelper(this.initialization);
static String get bannerAdUnitId => Platform.isAndroid
? 'ca-app-pub-3940256099942544/6300978111' \\Test ads
: 'ca-app-pub-3940256099942544/2934735716'; \\Test ads
}
Run Code Online (Sandbox Code Playgroud)
主页.dart
class _MainPageState extends State<MainPage>...
final Completer<BannerAd> bannerCompleter = Completer<BannerAd>();
...
BannerAd banner;
...
@override
void didChangeDependencies(){
super.didChangeDependencies();
final adHelper = Provider.of<AdHelper>(context);
adHelper.initialization.then((status){
setState(() {
banner ??= BannerAd(
adUnitId: AdHelper.bannerAdUnitId,
size: AdSize.banner,
request: AdRequest(),
listener: AdListener(
onAdLoaded: (Ad ad) {
print('Ad loaded: $BannerAd.');
bannerCompleter.complete(ad as BannerAd);
},
onAdFailedToLoad: (Ad ad, …Run Code Online (Sandbox Code Playgroud) 本文适用于那些在从 firebase_admob 插件迁移到 google_mobile_ads 时遇到困难的用户。为方便起见,我将 firebase_admob 名称缩写为 FA,将 google_mobile_ads 缩写为 GMA。
据我们所知,FA 插件已停止使用并被 GMA 插件取代。FA 相对于 GMA 的优点之一是,FA 横幅将出现在整个页面上,而无需在其他页面上重写代码。但在 GMA 中,横幅仅出现在包含 GMA 代码的页面上。
与 FA 相比,GMA 有很多缺点,包括:
那么我们如何在我们的应用程序中实现 GMA 以避免出现问题呢?方式很简单,就是把一个页面变成一个tab。这只是在底部(bottomNavigation)显示横幅广告的一种方式。没有奖励或插页式广告。看看我下面的方法..
我的页面:
我将在上面的页面上显示所有横幅。
在 pubspec.yaml 上
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
google_mobile_ads: ^1.0.1
Run Code Online (Sandbox Code Playgroud)
在 android\app\build.gradle 上
...
apply plugin: 'com.google.gms.google-services'
...
android {
compileSdkVersion 32
...
...
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 32
...
multiDexEnabled true
}
... …Run Code Online (Sandbox Code Playgroud) 最近,flutter 宣布发布适用于 Flutter 的 Google 移动广告,这是一款与 AdMob 和 AdManager 配合使用的新 SDK,可提供各种广告格式,包括横幅广告、插页式广告、原生广告和用于 Flutter 的激励视频广告
我想通过 AdMob 展示广告来通过我的 Flutter 应用获利。我们如何在我们的 Flutter 应用程序中设置和集成谷歌移动广告
我尝试将 GoogleMobileAds sdk 导入到 unity。当我导入 PlayServicesResolver 包时,我在控制台上收到这样的错误“ArgumentException:未找到请求的值“X86”。我想不通为什么?
ArgumentException:未找到请求的值“X86”。System.Enum+EnumResult.SetFailure (System.Enum+ParseFailureKind failure, System.String failureMessageID, System.Object failureMessageFormatArgument) (at <23c160f925be47d7a4fd083a3a62c920>:0) System.Enum.TryParseEnum,System. .Boolean ignoreCase, System.Enum+EnumResult& parseResult) (at <23c160f925be47d7a4fd083a3a62c920>:0) System.Enum.Parse (System.Type enumType, System.String value, System.Boolean ignoreCase) (at <23c160f925be47d7a4fd083a3a62c920>:0) (at <23c160f925be47d7a4fd083a3a62c920>) (at <23c160f925be47d7a4fd083a3a62c920>:0) Enum.Parse (System.Type enumType, System.String value) (at <23c160f925be47d7a4fd083a3a62c920>:0) GooglePlayServices.AndroidAbis.EnumValueStringToULong (System.Type enumType, System.
1[T].Poll (System.Func1[TResult] getCurrentValue, GooglePlayServices.PlayServicesResolver+PropertyPoller`1+Changed[T] 改变)(在 /Users/smiles/dev/src/unity-jar-resolver/source/PlayServicesResolver/src/PlayServicesResolver.cs:278)GooglePlayServices .PlayServicesResolver.PollAndroidAbis () (at /Users/smiles/dev/src/unity-jar-resolver/source/PlayServicesResolver/src/PlayServicesResolver.cs:1201) UnityEditor.EditorApplication.Internal_CallUpdateFunctions () (at C:/buildslave/unity /build/Editor/Mono/EditorApplication.cs:303)
截至今天,我开始收到此错误:
A/libc:致命信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),tid 31968 中的故障地址 0x0
在某些设备上,当调用 MobileAds.initialize(this) 时。如果我卸载该程序并重新安装,它在第一次打开应用程序时会按预期工作,但如果我关闭并再次打开应用程序,我会再次开始崩溃。删除 MobileAds.initialize(this) 也可以解决问题,但显然广告不会运行。
有什么想法可能会改变吗?
在 AndroidManifest 中:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-2882944708681916~4204025586" />
Run Code Online (Sandbox Code Playgroud)
在 build.gradle 中:
implementation 'com.google.android.gms:play-services-ads:19.8.0'
implementation "com.android.billingclient:billing:3.0.3"
Run Code Online (Sandbox Code Playgroud) 我试图使用 requestConfiguration 设置我的测试设备 ID。为了检查测试设备的设置是否成功,我logcat在 android studio 中进行了过滤setTestDeviceIds,但它向我显示了以下日志
2021-03-31 04:17:36.907 27185-27185/? I/Ads: Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("xxxxxxxxxxxxxxxxxxx")) to get test ads on this device.\nRun Code Online (Sandbox Code Playgroud)\n因此,测试设备的设置不起作用,我无法使用真实的广告进行测试。当我传递 testDeviceId 时,该日志应该不会出现。您可以看到我正在testDeviceId为 inRequestConfiguration和传递 \'s bannerAd。
这是我的main.dart文件
2021-03-31 04:17:36.907 27185-27185/? I/Ads: Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("xxxxxxxxxxxxxxxxxxx")) to get test ads on this device.\nRun Code Online (Sandbox Code Playgroud)\n这是我的adhelper.dart文件
import \'package:flutter/material.dart\';\nimport \'package:google_mobile_ads/google_mobile_ads.dart\';\nimport \'package:provider/provider.dart\';\nimport \'package:us/global/theme/app_themes.dart\';\nimport \'package:us/utils/ad_helper.dart\';\n\nvoid main() {\n WidgetsFlutterBinding.ensureInitialized();\n\n MobileAds.instance.initialize().then((InitializationStatus status) {\n print(\'Initialization done: ${status.adapterStatuses}\');\n MobileAds.instance\n .updateRequestConfiguration(RequestConfiguration(\n testDeviceIds: …Run Code Online (Sandbox Code Playgroud) 每当我尝试将图片上传到 Google Ads(应用广告系列)时,我都会收到:
\n\n\n\n现在可以\xe2\x80\x99 上传此文件。稍后再试。
\n
我等了几个小时并再次尝试,但仍然不起作用。我的图像代表了要求。
\n为什么会发生这种情况?
\n我将我的应用程序升级到了 Flutter 2,并使所有内容都为 null 安全。之后,我在实施 Google 移动广告 SDK 时遇到错误。
我遵循了所有文档,据此,尽管文档未更新,但我不应该收到此错误。这是我尝试实现广告的代码。
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:book_rent_app_chapter3/model/order.dart';
import 'package:book_rent_app_chapter3/provider/user.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
class OrdersScreen extends StatefulWidget {
OrdersScreen({Key? key}) : super(key: key);
@override
State<OrdersScreen> createState() => _OrdersScreenState();
}
class _OrdersScreenState extends State<OrdersScreen> {
BannerAd? _bannerAd;
@override
void initState() {
super.initState();
_bannerAd = BannerAd(
adUnitId: BannerAd.testAdUnitId,
request: AdRequest(),
size: AdSize.banner,
listener: BannerAdListener(
onAdLoaded: (Ad ad) {
print('$BannerAd loaded.');
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
print('$BannerAd failedToLoad: $error');
},
onAdOpened: (Ad ad) => …Run Code Online (Sandbox Code Playgroud) flutter google-mobile-ads firebase-admob dart-null-safety flutter2.0