我使用 dfp sdk,所以如果您使用其他 sdk,我不能保证它可以正常工作。我的代码已经适用于 admob 和其他中介网络,我尝试添加 facebook 受众网络。
布局.xml
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="@string/ad_unit_id"
android:visibility="gone" />
请注意,我在这里使用BANNER而不是SMART_BANNER,不知何故,dfp 和 facebook 之间的横幅大小不兼容。在我看来,这是一个sdk的问题。我希望谷歌稍后会解决这个问题,但我现在只是放弃 SMART_BANNER。正如我在更新中提到的,如果你使用 SMART_BANNER,你会得到这个W/FacebookAdapter(18649): The input ad size is not supported at this moment.
罐
facebook android sdk - 这个来自 facebook,你可以AudienceNetwork.jar
在里面找到。
facebook 适配器- 这是来自dfp 中介网络,您可以找到 FacebookAdapter.jar。
在 Android Studio 中,您需要做的就是将 jars 放入您的 libs 文件夹并确保您的 build.gradle 包含 libs 文件夹。
构建.gradle
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
...
}
不知何故,当我构建 apk 时,即使我Synchronize 'build.gradle'
. 因此,您可能需要检查您的 project.iml 并确保您在其中看到以下内容。
项目.iml
...
<orderEntry type="library" exported="" name="AudienceNetwork" level="project" />
<orderEntry type="library" exported="" name="FacebookAdapter" level="project" />
保卫
正如我在回复中所说,com.google.ads.mediation
如果你使用Proguard,你一定不要忘记添加!否则,你会一直看到不能instantiate com.google.ads.mediation.facebookadapter class
。
-keep public class com.google.ads.mediation.** { public *; }
日志
如果一切配置正确,您将看到这条消息。
02-18 16:24:25.315 8081-8307/com.xxxxxxx I/Ads﹕ Trying mediation network: 1.0568273599589929E19
02-18 16:24:25.320 8081-8081/com.xxxxxxx I/Ads﹕ Instantiating mediation adapter: com.google.ads.mediation.facebook.FacebookAdapter
02-18 16:24:25.335 8081-8081/com.xxxxxxx W/Ads﹕ Server parameters: {"gwhirl_share_location":"1","pubid":"xxxxxxxxxxxxx_xxxxxxxxxxxxx"}
如果您愿意放弃 SMART BANNER,这是使用 Audience Network 的最简单方法。如果您必须使用 SMART BANNER,我建议您使用com.google.ads.mediation.customevent.CustomEventBanner
自己实现自定义事件横幅。在Vpon 的 Google Admob Mediation中,它展示了一个自定义均匀横幅的实现示例。我认为您将能够以这种方式使用SMART_BANNER,这也意味着您必须自己转换广告尺寸。
更新
定位
实际上,我不确定您是否可以使用 facebook 受众网络进行定位,因为我在 facebook 的官方文档中找不到任何有关定位的信息。
您可以看到dfp Custom 目标,我猜代码将类似于.addNetworkExtrasBundle(new com.google.ads.mediation.facebook.FacebookAdapter(), bundle)
.
展示位置 ID
如果您不熟悉如何使用从 facebook 受众网络获得的placement_id,您必须执行以下操作:
- 创建订单
- 创建订单项
- 创建
SDK mediation
广告素材
- 如下图所示选择Facebook Audience Network,然后将您的展示位置 ID 放在那里。
这是您如何操作的非常简单的版本,您应该知道订单项的设置会对广告产生影响。如果您的设置不正确,例如项目的类型优先级过低或频次上限过长,您可能看不到广告。
2016 年 2 月
您现在可以使用 gradle 安装受众网络库。
compile 'com.facebook.android:audience-network-sdk:4.+'
有关在 Android 中使用原生广告 API 的更多信息
如果您在没有投放任何广告的情况下看到以下消息,那可能是因为您的设备或模拟器上没有安装 facebook 应用程序。
E/ActivityThread: Failed to find provider info for com.facebook.katana.provider.AttributionIdProvider
W/FacebookAdapter: No fill. We are not able to serve ads to this person. Please refer to https://developers.facebook.com/docs/audience-network/faq#a12. If you are integrating Audience Network for the first time, you can use test ads https://developers.facebook.com/docs/audience-network/testing.
2016 年 5 月
Yoann Hercouet 在评论中指出LARGE_BANNER is also not available on Facebook
。