【发布时间】:2022-08-20 22:32:02
【问题描述】:
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\" />
这是我的实现
我在我的主目录上添加了这个
最终的 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\');
}));
}
标签: flutter admob googlemobileads admob-rewardedvideoad