admob_flutter
admob_flutter copied to clipboard
example code implementation error
Hello, I have a strange problem with implementation example code into my own project. I've tryed many different approaches but still, the banners are shown (just test ones) and got the same error:
[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, java.lang.IllegalStateException: Trying to create an already created platform view, view id: 0 E/flutter (25773): at io.flutter.plugin.platform.PlatformViewsController$1.createPlatformView(PlatformViewsController.java:85) E/flutter (25773): at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.create(PlatformViewsChannel.java:96) E/flutter (25773): at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.onMethodCall(PlatformViewsChannel.java:60) E/flutter (25773): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:231) E/flutter (25773): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:93) E/flutter (25773): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:642) E/flutter (25773): at android.os.MessageQueue.nativePollOnce(Native Method) E/flutter (25773): at android.os.MessageQueue.next(MessageQueue.java:336) E/flutter (25773): at android.os.Looper.loop(Looper.java:174) E/flutter (25773): at android.app.ActivityThread.main(ActivityThread.java:7356) E/flutter (25773): at java.lang.reflect.Method.invoke(Native Method) E/flutter (25773): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) E/flutter (25773): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) E/flutter (25773): , null) E/flutter (25773): #0 StandardMethodCodec.decodeEnvelope package:flutter/…/services/message_codecs.dart:569 E/flutter (25773): #1 MethodChannel.invokeMethod package:flutter/…/services/platform_channel.dart:321 E/flutter (25773):
E/flutter (25773): #2 AndroidViewController._create package:flutter/…/services/platform_views.dart:640 E/flutter (25773): #3 AndroidViewController.setSize package:flutter/…/services/platform_views.dart:557 E/flutter (25773): #4 RenderAndroidView._sizePlatformView package:flutter/…/rendering/platform_view.dart:174 E/flutter (25773): #5 RenderAndroidView.performResize package:flutter/…/rendering/platform_view.dart:155 E/flutter (25773): #6 RenderObject.layout package:flutter/…/rendering/object.dart:1703 E/flutter (25773): #7 RenderProxyBoxMixin.performLayout package:flutter/…/rendering/proxy_box.dart:105 E/flutter (25773): #8 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #9 RenderConstrainedBox.performLayout package:flutter/…/rendering/proxy_box.dart:259 E/flutter (25773): #10 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #11 RenderPadding.performLayout package:flutter/…/rendering/shifted_box.dart:206 E/flutter (25773): #12 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #13 RenderFlex.performLayout package:flutter/…/rendering/flex.dart:744 E/flutter (25773): #14 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #15 RenderProxyBoxMixin.performLayout package:flutter/…/rendering/proxy_box.dart:105 E/flutter (25773): #16 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #17 RenderProxyBoxMixin.performLayout package:flutter/…/rendering/proxy_box.dart:105 E/flutter (25773): #18 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #19 RenderSliverMultiBoxAdaptor.insertAndLayoutChild package:flutter/…/rendering/sliver_multi_box_adaptor.dart:492 E/flutter (25773): #20 RenderSliverList.performLayout.advance package:flutter/…/rendering/sliver_list.dart:195 E/flutter (25773): #21 RenderSliverList.performLayout package:flutter/…/rendering/sliver_list.dart:238 E/flutter (25773): #22 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #23 RenderSliverEdgeInsetsPadding.performLayout package:flutter/…/rendering/sliver_padding.dart:134 E/flutter (25773): #24 RenderSliverPadding.performLayout package:flutter/…/rendering/sliver_padding.dart:373 E/flutter (25773): #25 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #26 RenderViewportBase.layoutChildSequence package:flutter/…/rendering/viewport.dart:410 E/flutter (25773): #27 RenderViewport._attemptLayout package:flutter/…/rendering/viewport.dart:1367 E/flutter (25773): #28 RenderViewport.performLayout package:flutter/…/rendering/viewport.dart:1285 E/flutter (25773): #29 RenderObject.layout package:flutter/…/rendering/object.dart:1724 E/flutter (25773): #30 RenderProxyBoxMixin.performLayout (packa ...
here is the flutter doctor -v output [√] Flutter (Channel stable, v1.12.13+hotfix.7, on Microsoft Windows [Version 10.0.18362.592], locale bg-BG) • Flutter version 1.12.13+hotfix.7 at C:\flutter • Framework revision 9f5ff2306b (2 weeks ago), 2020-01-26 22:38:26 -0800 • Engine revision a67792536c • Dart version 2.7.0
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2) • Android SDK at C:\Users\Machkonti\AppData\Local\Android\sdk • Android NDK location not configured (optional; useful for native profiling support) • Platform android-29, build-tools 29.0.2 • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03) • All Android licenses accepted.
[√] Android Studio (version 3.5) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin version 43.0.1 • Dart plugin version 191.8593 • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
[√] VS Code (version 1.42.0) • VS Code at C:\Users\Machkonti\AppData\Local\Programs\Microsoft VS Code • Flutter extension version 3.8.1
[√] Connected device (1 available) • Android SDK built for x86 • emulator-5554 • android-x86 • Android 10 (API 29) (emulator)
main.dart
Future
main() async { WidgetsFlutterBinding.ensureInitialized(); ... Admob.initialize('ca-app-pub-8775944520232965~3586181518'); runApp(MyApp(...)); }
SecondScreen.dart
.... ListView.builder( physics: BouncingScrollPhysics(), itemCount: snapshot.data.length, itemBuilder: (BuildContext context, int index) { if (index != 0 && index % 6 == 0) { return Column( children: <Widget>[ Container( margin: EdgeInsets.only(bottom: 20.0), child: AdmobBanner( adUnitId: getBannerAdUnitId(), adSize: bannerSize, listener: (AdmobAdEvent event, Map<String, dynamic> args) { handleEvent(event, args, 'Banner'); }, ), ), ], ); } ...
Next question is, how can i determinate where is the problem of loading and real banner? I recieve Error failedToLoad and errorcode: 0 nothing to point me to a problem
Ok, it seems there is a progress in error reporting ... now i recieve the following as an debug string in console:
E/AccessibilityBridge(16330): VirtualView node must not be the root node. W/Ads (16330): Not retrying to fetch app settings I/Ads (16330): Ad failed to load : 3 I/Ads (16330): Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("A71D77ED6774263FDE5DC34BCCE67BFF") to get test ads on this device. I/flutter (16330): Admob Banner failed to load. :( {errorCode: 3} Banner
@machkonti
The first error (E/AccessibilityBridge(16330)): https://github.com/flutter/flutter/issues/45928 (I don't know why this error would be affecting you though.)
Error code 3: The ad request was successful, but no ad was returned due to lack of ad inventory. ( https://stackoverflow.com/questions/33566485/failed-to-load-ad-3 )
RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("A71D77ED6774263FDE5DC34BCCE67BFF") to get test ads on this device.
@kmcgill88 Do you know what this error is? ^
i have the same error... what happened?
Same error. How did you fix it?
Facing same issue.... any solutions ?
Still have the same error here
RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("A71D77ED6774263FDE5DC34BCCE67BFF") to get test ads on this device.
@EliasDeuss @ajosecueto @maheshkumar2150 @azzamjafri @Renkon117 guys, it is not a bug but a feature) this log just tells you what test-id to use, from documentation: https://developers.google.com/admob/android/test-ads?hl=it#add_your_test_device
I solved this problem by updating RequestConfiguration with the testDeviceIds
const List<String> testDeviceIds = ['289C....F6'];
void main() async {
WidgetsFlutterBinding.ensureInitialized();
MobileAds.instance.initialize();
// thing to add
RequestConfiguration configuration = RequestConfiguration(
testDeviceIds: testDeviceIds,
);
MobileAds.instance.updateRequestConfiguration(configuration);
await Firebase.initializeApp();
runApp(MyApp());
}
How to get TestDeviceIDs
If you want to test ads in your app as you're developing.
- Load your ads-integrated app and make an ad request.
- Check the logcat output for a message that looks like the one below, which shows you your device ID and how to add it as a test device: Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("289.......E6") to get test ads on this device.
- Add the device ID that your logcat gave you in the terminal, and use it as testDeviceId