android - 颤振 - 原生广告不会加载和显示,而且它的事件回调也没有显示任何内容
问题描述
在等待官方 Admob 的原生广告时,我尝试使用 3rd 方插件集成它。
我尝试使用声称可以在此处显示Admob 的原生广告 的插件。
但是,原生广告不会在 Android 设备上加载和显示(iOS 尚未测试)。
事件回调也没有显示任何内容。
我已经在这里提交了一个问题,但我认为作者可能很忙,所以我也在这里发布。
以下是我的代码:
对于初始化:
class HomeScreen extends StatefulWidget{
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> with AfterLayoutMixin<HomeScreen> {
@override
void initState() {
// TODO: implement initState
super.initState();
NativeAds.initialize();
...
}
对于NativeAds展示位置是在以下结构下:
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Scaffold(
appBar: AppBar( .. ),
body: OfflineBuilder(
connectivityBuilder: (BuildContext context, ConnectivityResult connectivity, Widget child) {
...
child: NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { ... }
body: RefreshIndicator(
backgroundColor: Pigment.fromString(UIData.primaryColor),
color: Colors.white,
onRefresh: () => homeBloc.init(),
child: ListView(
children: <Widget>[
Row(
...
ListView(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
children: <Widget>[
...
SizedBox(
width: double.infinity,
height: 320,
child: NativeAdView(
onParentViewCreated: (_) {
print("sinative create.....");
},
androidParam: AndroidParam()
..placementId = "ca-app-pub-xxx" //my admob
..packageName = "com.apps.myapp"
..layoutName = "native_ad_layout"
..attributionText = "AD",
iosParam: IOSParam()
..placementId = "ca-app-pub-3940256099942544/3986624511" // test
..bundleId = "{{YOUR_IOS_APP_BUNDLE_ID}}"
..layoutName = "{{YOUR_CREATED_LAYOUT_FILE_NAME}}"
..attributionText = "SPONSORED",
onAdImpression: () => print("native is show"),
onAdClicked: () => print("onAdClicked!!!"),
onAdFailedToLoad: (Map<String, dynamic> error) => print("native is error ==> $error"),
),
),
...
...
任何想法?
提前致谢...
==更新(根据 Itiel Maimon 的建议)
我main.dart
在runApp()之前进行了初始化,但是在调试中我得到了以下错误:
E/flutter (10737): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method initialize on channel native_ads)
E/flutter (10737): #0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:7)
E/flutter (10737): <asynchronous suspension>
E/flutter (10737): #1 new NativeAds.initialize (package:native_ads/native_ads.dart:5:14)
E/flutter (10737): #2 main.<anonymous closure> (package:apps789apps/main.dart:35:15)
E/flutter (10737): #3 _rootRunUnary (dart:async/zone.dart:1132:38)
E/flutter (10737): #4 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter (10737): #5 _FutureListener.handleValue (dart:async/future_impl.dart:137:18)
E/flutter (10737): #6 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:678:45)
E/flutter (10737): #7 Future._propagateToListeners (dart:async/future_impl.dart:707:32)
E/flutter (10737): #8 Future._completeWithValue (dart:async/future_impl.dart:522:5)
E/flutter (10737): #9 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:30:15)
E/flutter (10737): #10 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:288:13)
E/flutter (10737): #11 SystemChrome.setPreferredOrientations (package:flutter/src/services/system_chrome.dart)
E/flutter (10737): <asynchronous suspension>
E/flutter (10737): #12 main (package:apps789apps/main.dart:31:16)
E/flutter (10737): <asynchronous suspension>
E/flutter (10737): #13 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:229:25)
E/flutter (10737): #14 _rootRun (dart:async/zone.dart:1124:13)
E/flutter (10737): #15 _CustomZone.run (dart:async/zone.dart:1021:19)
E/flutter (10737): #16 _runZoned (dart:async/zone.dart:1516:10)
E/flutter (10737): #17 runZoned (dart:async/zone.dart:1500:12)
E/flutter (10737): #18 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:221:5)
E/flutter (10737): #19 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:305:19)
E/flutter (10737): #20 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
有什么解决办法吗?
解决方案
https://pub.dev/packages/native_ads
一个新的原生广告包可用。尝试这个。
支持的原生广告字段
- 标题(必填)
- 正文(必填)
- 号召性用语(必填)
- 广告归因(必填)
- 媒体
- 图标
- 星星
- 评分
- 店铺
- 价格
- 广告商
事件回调
通过传递给 NativeAdView 构造函数来接收某些事件的回调
- 广告印象
- onAdClicked
- onAdFailedToLoad
- onAdLeft 应用程序
- onAdLoaded
目前不支持中介广告。检查上面给出的官方链接以获取新功能
推荐阅读
- javascript - 悬停图像时使用自定义光标并指向链接
- node.js - 我该如何解决这个问题 heroku web
- perl - 仅当以 Perl 中的给定字符串开头时,才将一行从一个文件写入另一个文件
- python - 按日期对 Django Rest API 端点响应进行排序
- oracle - 如何使用 cron 表达式在 oracle 中安排数据库作业?
- java - 如何让 @UseAdviceWith 在 Camel 3 中工作
- c# - 在请求对象中获取 X-Original-Host
- mysql - 如何在有条件的情况下执行 LEFT JOIN
- html - 在我的 wordpress 网站上用` 探测
- laravel - Laravel 背包 crud 用于更新和列出关系