flutter - нативная реклама не загружается и не показывается, а также ее обратный вызов событий, ничего не показывающий - PullRequest
2 голосов
/ 19 сентября 2019

В ожидании официального объявления Admob Native Ads для флаттера я пытаюсь интегрировать его с помощью стороннего плагина.

Я пытаюсь использовать плагин, который, как утверждается, может отображать Admob's NativeРеклама здесь .

Однако нативная реклама не будет загружаться и показываться на устройствах 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"),
                                  ),
                                ),                      

                                ...

                                ...


Любая идея?

Заранее спасибо ...

== Обновление (после предложения Итиэля Маймона)

У меня есть место инициализации в 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)

Любая идея, чтобы решить?

1 Ответ

0 голосов
/ 27 сентября 2019

Не помещайте NativeAds.initialize(); в метод initState ().Поместите его перед вызовом runApp ().например, void main() { NativeAds.initialize(); runApp(MyApp()); }

Также убедитесь, что вы используете Admob идентификаторы тестовых рекламных блоков , в противном случае вы не увидите никакой рекламы.

Если она все еще не работает,попробуйте использовать NativeAdViewWrapper , используя child: const NativeAdViewWrapper(), в требуемом месте.

...