RewardedAd在google_mobile_ads上不起作用: 2.0.1我已经到处搜索过了,修复程序也不起作用。
这是日志上的错误。
E/DartMessenger( 5002): Uncaught exception in binary message listener
E/DartMessenger( 5002): java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
E/DartMessenger( 5002): at io.flutter.plugins.googlemobileads.AdMessageCodec.readValueOfType(AdMessageCodec.java:231)
E/DartMessenger( 5002): at io.flutter.plugin.common.StandardMessageCodec.readValue(StandardMessageCodec.java:340)
E/DartMessenger( 5002): at io.flutter.plugin.common.StandardMessageCodec.readValueOfType(StandardMessageCodec.java:434)
E/DartMessenger( 5002): at io.flutter.plugins.googlemobileads.AdMessageCodec.readValueOfType(AdMessageCodec.java:319)
E/DartMessenger( 5002): at io.flutter.plugin.common.StandardMessageCodec.readValue(StandardMessageCodec.java:340)
E/DartMessenger( 5002): at io.flutter.plugin.common.StandardMethodCodec.decodeMethodCall(StandardMethodCodec.java:51)
E/DartMessenger( 5002): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:260)
E/DartMessenger( 5002): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/DartMessenger( 5002): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$DartMessenger(DartMessenger.java:319)
E/DartMessenger( 5002): at io.flutter.embedding.engine.dart.-$$Lambda$DartMessenger$TsixYUB5E6FpKhMtCSQVHKE89gQ.run(Unknown Source:12)
E/DartMessenger( 5002): at android.os.Handler.handleCallback(Handler.java:883)
E/DartMessenger( 5002): at android.os.Handler.dispatchMessage(Handler.java:100)
E/DartMessenger( 5002): at android.os.Looper.loop(Looper.java:237)
E/DartMessenger( 5002): at android.app.ActivityThread.main(ActivityThread.java:7830)
E/DartMessenger( 5002): at java.lang.reflect.Method.invoke(Native Method)
E/DartMessenger( 5002): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
E/DartMessenger( 5002): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1040)
E/flutter ( 5002): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: MissingPluginException(No implementation found for method loadRewardedAd on channel plugins.flutter.io/google_mobile_ads)
E/flutter ( 5002): #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:165:7)
E/flutter ( 5002): <asynchronous suspension>
E/flutter ( 5002): #1 RewardedAd.load (package:google_mobile_ads/src/ad_containers.dart:1154:5)
E/flutter ( 5002): <asynchronous suspension>
E/flutter ( 5002): 我已经在MainActivity上登了这段代码
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}我还确保把这个放在build.gradle上
implementation 'com.google.android.gms:play-services-ads:21.1.0'我还将此添加到清单文件中。
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713" />这是我的实现
我在主菜上加了这个
final initFuture = MobileAds.instance.initialize();adState = AdState(initFuture);
并为AdState创建了另一个文件
static String get rewardedAdUnitId {
if (Platform.isAndroid) {
return "ca-app-pub-3940256099942544/5224354917";
} else if (Platform.isIOS) {
return "ca-app-pub-3940256099942544/1712485313";
} else {
throw new UnsupportedError("Unsupported platform");
}
}未来的初始化;
AdState(this.initialization);
论我的实施
void loadRewardedAd(BuildContext context) {
RewardedAd.load(
adUnitId: AdState.rewardedAdUnitId,
request: const AdRequest(),
rewardedAdLoadCallback:
RewardedAdLoadCallback(onAdLoaded: (ad) {
ad.show(
onUserEarnedReward: (ad,rewardPoints){
CommonTools.showMessage(context, 'Energy Received : ');
}
);
ad.fullScreenContentCallback = FullScreenContentCallback(
onAdShowedFullScreenContent: (ad){
},
onAdFailedToShowFullScreenContent: (ad,error){
CommonTools.showMessage(context, 'Ads Not Available For Now');
ad.dispose();
},
onAdDismissedFullScreenContent: (ad){
CommonTools.showMessage(context, 'Ads Not Available For Now');
ad.dispose();
}
);
}, onAdFailedToLoad: (er) {
CommonTools.showMessage(context, 'Ads Not Available For Now');
}));}
发布于 2022-08-20 14:32:02
在使这个问题给我带来创伤后,我设法使它发挥作用。我所做的就是在MaterialApp中包装所有的东西,并在我的主Widget上放置路径。
runApp(
MaterialApp(
routes: <String, WidgetBuilder>{
'/': (BuildContext context) => MyApp()
},
),
);至于它是如何工作的,我不知道它是如何解决所有问题的,但如果您遇到这个问题,它可能会对您有所帮助。
发布于 2022-08-17 17:16:58
上面的主要活动代码是kotlin的。确保你的主要活动也在科特林。
https://stackoverflow.com/questions/73389993
复制相似问题