Flutter,Native Admob,Ad failed to load:0

cu6pst1q  于 2023-04-22  发布在  Flutter
关注(0)|答案(3)|浏览(222)

https://pub.dev/packages/google_mobile_ads
我复制了这个例子
一切正常,除了“原生广告”
当然,MainActivity.kt和NativeAdFactoryExample.kt都设置得很完美
当然,我使用了NativeAd的testadUnitId
但它一直在

I/Ads     ( 6932): Received log message: <Google:HTML> Incorrect native ad response. Click actions were not properly specified
I/Ads     ( 6932): Ad failed to load : 0
I/flutter ( 6932): NativeAd failedToLoad: LoadAdError(code: 0, domain: com.google.android.gms.ads, message: Internal error.)

我已经做了12个小时了,还是没有解决,我真的快疯了
请问有谁可以帮助解决这个问题吗?

g52tjvyc

g52tjvyc1#

如果你的代码是确定的,那么没有什么可担心的。只是再试一次其他模拟器与“Google Play”或尝试与现场设备。

hzbexzde

hzbexzde2#

如果你的代码是好的,而且你正在使用Google Play模拟器。只需设置你的app-ads.txt,可以在谷歌AdMob上的所有应用程序中找到

Google将抓取URL(您网站的根URL)并找到这些请求或提供广告的应用程序。

fsi0uk1n

fsi0uk1n3#

所以我遇到了这个问题,无法让它工作,直到我发现这个https://github.com/googleads/googleads-mobile-flutter/issues/399所以使您的广告小部件使用自动保持活跃的mixin显然有帮助,我尝试了我的代码,它不会工作,然后我使用了链接中的例子,它确实工作,我能看到的唯一区别是他正在创建一个广告示例在init状态,然后调用。load()在那个示例上,当我使用dart符号并创建示例并在同一个调用Object()..load()中调用.. load()时,我认为这些东西通常是相同的,但我切换到他的版本,它工作了。下面是示例,我唯一交换的是从使用factoryId到指定样式的样式

class NativeInlineAd extends StatefulWidget {
    const NativeInlineAd();
  
    @override
    State createState() => _NativeInlineAdState();
  }
  
  class _NativeInlineAdState extends State<NativeInlineAd>
      with AutomaticKeepAliveClientMixin {
    // COMPLETE: Add NativeAd instance
    late NativeAd _ad;
  
    // COMPLETE: Add _isAdLoaded
    bool _isAdLoaded = false;
  
    @override
    void initState() {
      super.initState();
  
      // COMPLETE: Create a NativeAd instance
      _ad = NativeAd(
        adUnitId: kReleaseMode
            ? '<YOUR_NATIVE_ADMOB_ID>'
            : '<NATIVE_TEST_AD_ID>',
        factoryId: 'googleNativeAdsCard',
        request: const AdRequest(),
        listener: NativeAdListener(
          onAdLoaded: (_) {
            setState(() {
              _isAdLoaded = true;
            });
          },
          onAdFailedToLoad: (ad, error) {
            // Releases an ad resource when it fails to load
            ad.dispose();
  
            throw 'Ad load failed (code=${error.code} message=${error.message})';
          },
        ),
      );
  
      // COMPLETE: Load an ad
      _ad.load();
    }
  
    @override
    Widget build(BuildContext context) {
      super.build(context);
      if (_isAdLoaded) {
        return Container(
          child:  SizedBox(height: 200, child: AdWidget(ad: _ad)),
          ),
          height: 270,
          margin: const EdgeInsets.only(
            left: 10,
            right: 10,
            top: 5,
          ),
          padding: const EdgeInsets.all(8),
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(
              ValuesConstant.borderRadius,
            ),
            border: Border.all(
              width: 1,
              color: Colors.black,
            ),
            color: Theme.of(context).cardTheme.color,
          ),
          alignment: Alignment.center,
        );
      }
      return const SizedBox(
        height: 72.0,
        child: Center(
          child: CircularProgressIndicator(
            valueColor: AlwaysStoppedAnimation<Color>(
              Colors.grey,
            ),
          ),
        ),
      );
    }
  
    @override
    void dispose() {
      _ad.dispose();
      super.dispose();
    }
  
    @override
    bool get wantKeepAlive => true;
  }

相关问题