4

安卓(Java)方式:

最小的可重现代码:

public class MainActivity extends Activity {
    private static final String TAG = "MyTag";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this);
        AdRequest adRequest = new AdRequest.Builder().build();
        InterstitialAd.load(this, "ca-app-pub-3940256099942544/1033173712", adRequest,
                new InterstitialAdLoadCallback() {
                    @Override
                    public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                        Log.i(TAG, "onAdLoaded");
                        interstitialAd.show(MainActivity.this);
                    }

                    @Override
                    public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                        Log.i(TAG, loadAdError.getMessage());
                    }
                });
    }
}

我的build.gradle(app)

implementation 'com.google.android.gms:play-services-ads:20.2.0'

我的AndroidManifest.xml

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-3940256099942544~3347511713"/>

问题(在 Android 上):

即使使用测试广告 ID 和测试应用 ID,广告也不会加载。


Flutter(飞镖)方式:

最小的可重现代码:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();
  runApp(MaterialApp(home: MyApp()));
}

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    InterstitialAd.load(
      adUnitId: 'ca-app-pub-3940256099942544/1033173712',
      request: AdRequest(),
      adLoadCallback: InterstitialAdLoadCallback(
        onAdLoaded: (ad) => ad.show(),
        onAdFailedToLoad: (e) => print('Failed: $e'),
      ),
    );
  }

  @override
  Widget build(BuildContext context) => Container();
}

问题(在颤振上):

测试广告出现了,但是当我尝试使用我自己的广告 ID 和应用 ID(即使在发布模式下)时,它会因为这个错误而失败。

没有广告配置。

距离我在 Admob 上创建该广告单元已经一周了。我在 Play 商店中也有一个不同的应用程序(它正在显示广告),但即使我在代码中使用该应用程序的 ID,它也无法加载带有错误代码 3 的广告。

PS:已经尝试过这个解决方案,但没有奏效。

Android 或 Flutter 解决方案中的任何一个都适合我

4

4 回答 4

1

我记得,加载一个 Ad 对象后,您需要将其显示给用户,以便设备可以根据条件或事件等知道何时显示 Ad。

加载广告:

InterstitialAd.load(
  adUnitId: '<ad unit id>',
  request: AdRequest(),
  adLoadCallback: InterstitialAdLoadCallback(
    onAdLoaded: (InterstitialAd ad) {
      // Keep a reference to the ad so you can show it later.
      this._interstitialAd = ad;
    },
    onAdFailedToLoad: (LoadAdError error) {
      print('InterstitialAd failed to load: $error');
    },
  ));

监听广告状态的广告事件:


interstitialAd.fullScreenContentCallback = FullScreenContentCallback(
  onAdShowedFullScreenContent: (InterstitialAd ad) =>
     print('$ad onAdShowedFullScreenContent.'),
  onAdDismissedFullScreenContent: (InterstitialAd ad) {
    print('$ad onAdDismissedFullScreenContent.');
    ad.dispose();
  },
  onAdFailedToShowFullScreenContent: (InterstitialAd ad, AdError error) {
    print('$ad onAdFailedToShowFullScreenContent: $error');
    ad.dispose();
  },
  onAdImpression: (InterstitialAd ad) => print('$ad impression occurred.'),
);

要显示广告:


myInterstitial.show();

正如我在您的代码中看到的,您没有在 UI 代码中显示插页式广告。如我错了请纠正我。

编辑:

如果您询问如何myInterstitial.show();在代码中使用它,您可以在 FlatButton、TextButton、GestureDetector 等以及 onTap 或 onPressed 函数中使用它,使用myInterstitial.show();

于 2021-07-05T12:10:44.067 回答
0

错误代码 3:ERROR_CODE_NO_FILL

广告请求成功,但由于广告资源不足,未返回任何广告

发生原因:广告商可以根据业务相关性定位特定区域、平台和用户资料,这有时会导致特定地区或用户资料的广告可用性降低。错误代码表明实施是正确的,并且由于在从应用程序发送广告请求的特定时刻缺乏合适的广告可用性,因此未满足广告请求。

对某些应用程序或广告单元的政策相关限制也将导致返回错误代码 3 以响应广告请求。


如何解决?

→ 由于我们无法操纵广告客户的需求,因此没有针对此错误的特定“修复”。

→ 中介:在某些情况下,某些广告网络可能在某些地区或特定格式的表现有限,在这种情况下,酒吧可以尝试使用中介来添加其他可能表现良好的广告网络。

→ 检查 Pub ID、应用程序和广告单元 ID 的策略状态。此外,请检查品牌安全标志和 Coppa 状态。

→ 如果 Pub 可以获得广告单元的测试广告(说明) -那么它们的实施是正确的,并且广告单元将根据广告客户的需求在广告可用时正常投放广告。


结论

尝试使用上述“说明”测试您的实现,以确保一切设置正确。但我个人的看法是,它没有设置错误。

错误代码表明实现是正确的

我认为我的回答将帮助您排除一些假设。并希望引导您进行最终的“修复”。

于 2021-07-04T13:21:15.560 回答
0

让我以通用的方式提供一些建议。既然你提到

测试广告以 Flutter 方式运行良好

我觉得编码部分没有大问题。但我认为在使用 Google Ads 时需要注意一些政策。

无效点击次数和展示次数以及无效流量

无效流量包括可能人为增加广告客户成本或发布商收入的任何点击或展示。无效流量包括故意欺诈流量以及意外点击。

因此,有时向您的应用投放的广告会受到限制,这可能是问题的原因。这只能通过联系 Google 支持团队来解决。

您还可以查看与您的 Google Ad 帐户相关联的电子邮件,了解与此相关的任何通知。通常,如果政策不遵守,Google 将发送如下电子邮件。

对您的帐户设置的 Google Ads 投放限制 在此处输入图像描述

确保您遵守他们网站中提到的政策列表。

于 2021-07-07T12:49:57.813 回答
0

之前有过类似的问题,有时您要求的尺寸没有广告。尝试使用不同的广告尺寸来检查是否有任何广告即将到来。

于 2021-07-09T13:34:44.100 回答