在Android中添加Facebook横幅广告

在Android中添加Facebook横幅广告,android,facebook-ads-api,Android,Facebook Ads Api,我在Android应用程序中添加了Facebook横幅广告。我使用了有效的横幅ID,但没有任何内容。我想知道我的代码是否有问题 这是我的密码 在build.app中 compile 'com.facebook.android:audience-network-sdk:4.18.0' 在main活动中 com.facebook.ads.AdView adView2 = new com.facebook.ads.AdView(this, "my_banner_id",AdSize.BANN

我在Android应用程序中添加了Facebook横幅广告。我使用了有效的横幅ID,但没有任何内容。我想知道我的代码是否有问题

这是我的密码

build.app中

    compile 'com.facebook.android:audience-network-sdk:4.18.0'
main活动中

com.facebook.ads.AdView adView2 = new com.facebook.ads.AdView(this, "my_banner_id",AdSize.BANNER_HEIGHT_50);
    LinearLayout adContainer = (LinearLayout) findViewById(R.id.banner_container);
    adContainer.addView(adView2);
    adView2.loadAd();
在activity_main.xml中

 <LinearLayout
    android:id="@+id/banner_container"
    android:layout_width="match_parent"
    android:layout_height="55dp"
    android:orientation="vertical"
    />

解决此问题的步骤:

  • 将此测试id添加到onCreate方法中

    AdSettings.addTestDevice(“您散列id”)

  • 有时由于工资单不完整,我们不得不面对这个问题。交叉检查您的工资单信息是否完整


有关此问题的更多详细信息,请查看此链接

当我更改时,它会起作用:

app.build

main活动中

com.facebook.ads.AdView adView2 = new com.facebook.ads.AdView(this, "my_banner_id",AdSize.BANNER_HEIGHT_50);
    LinearLayout adContainer = (LinearLayout) findViewById(R.id.banner_container);
    adContainer.addView(adView2);
    adView2.loadAd();

但是我在
日志中仍然有这个错误

TeamDetails has leaked IntentReceiver com.facebook.ads.internal.DisplayAdController$c@3012f931 that was originally registered here. Are you missing a call to unregisterReceiver()?

我不知道为什么这个错误仍然出现在
日志中

使用facebook ads sdk一步一步地解决。确保使用最新版本,因为旧版本不会收到广告。我运行的是旧版本,广告停止渲染

为了接收广告,您必须在测试设备上拥有一个facebook帐户,该帐户链接到您试图将其货币化的monetisation manager属性

下面是我如何渲染扇形横幅。请记住,我有一个渲染方法,它接收
adConfig
作为配置对象,其中包含facebook adUnit和
父对象,父对象是我要渲染add的布局容器(这些仅适用于我的项目):


检查你的logcat以了解可能的原因。你是在emulator还是在real device上测试它?在real device上。你的代码非常完美,请尝试在logcat中查看一些调试消息。我在logcat中发现了这一点`当使用Facebook的广告单元测试你的应用程序时,你必须指定设备哈希ID以确保测试广告的交付,在加载广告之前添加以下代码:AdSettings.addTestDevice(“一些字母”);`我会试试这句话。谢谢你的回答。什么是散列id?您可以从facebook开发者控制台创建测试散列id,您可以在那里创建横幅广告。此链接将对您有所帮助。好的,当我使用hash_id时,add没有出现,并且给我这个错误
已经泄露了IntentReceiver com.facebook.ads.internal.DisplayAdController$c@421bdf40原来是在这里注册的。是否缺少对unregisterReceiver()的调用
Hello Nouman:)在问题中看到我的编辑,我想我已经解决了。谢谢你的回答,我的问题是使用了旧版本的Facebook ads sdk。尝试添加@Override protected void onDestroy(){if(adView!=null){adView.destroy();}super.onDestroy();}@DivyeshPatel当我添加
onDestroy()时会发生什么
函数?当活动/片段删除谢谢您时,它会正确关闭adview,但是对于
InterstitalAD
,在
adview中是否有类似于销毁的函数?ondestory函数在活动或片段中可用
com.facebook.ads.AdView adView2 = new com.facebook.ads.AdView(this, "my_banner_id",AdSize.BANNER_HEIGHT_50);
Resources res = getResources();
    com.facebook.ads.AdView adView2 = new com.facebook.ads.AdView(this,res.getString(R.string.facebook_banner),AdSize.BANNER_HEIGHT_50);
TeamDetails has leaked IntentReceiver com.facebook.ads.internal.DisplayAdController$c@3012f931 that was originally registered here. Are you missing a call to unregisterReceiver()?
    if (adConfig != null && adConfig.getAdUnit() != null) {
        Log.d(TAG, "displayBanner " + adConfig.getClass().getSimpleName() + " : " + adConfig.getAdUnit());
        parent.setVisibility(View.VISIBLE);
        parent.removeAllViews();
        com.facebook.ads.AdView adView = new com.facebook.ads.AdView(parent.getContext(), adConfig.getAdUnit(), com.facebook.ads.AdSize.BANNER_HEIGHT_50);
        parent.addView(adView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        adView.loadAd();
    }