我使用 dfp sdk,所以如果您使用其他 sdk,我不能保证它可以正常工作。我的代码已经适用于 admob 和其他中介网络,我尝试添加 facebook 受众网络。
layout.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 adapter - 这是来自dfp mediation network,您可以找到 FacebookAdapter.jar。
在 Android Studio 中,您只需将 jar 放入您的 libs 文件夹并确保您的 build.gradle 包含 libs 文件夹。
build.gradle
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
...
}
不知何故,当我构建 apk 时,即使我 Synchronize 'build.gradle',库也没有被编译。因此,您可能需要检查您的 project.iml 并确保您在其中看到以下内容。
project.iml
...
<orderEntry type="library" exported="" name="AudienceNetwork" level="project" />
<orderEntry type="library" exported="" name="FacebookAdapter" level="project" />
Proguard
正如我在回复中所说,如果您使用Proguard,请不要忘记添加com.google.ads.mediation!否则你会一直看不到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's Google Admob Mediation 中,它显示了自定义均匀横幅的实现示例。我想你可以通过这种方式使用SMART_BANNER,这也意味着你必须自己转换广告尺寸。
更新
定位
我实际上不确定您是否可以使用 facebook 受众网络进行定位,因为我在 facebook 的官方文档中找不到任何有关定位的信息。
您可以看到 dfp 对此的自定义定位,我猜代码会类似于 .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.+'
更多信息Using the Native Ad API in Android
如果您在没有投放任何广告的情况下看到以下消息,那可能是因为您的设备或模拟器上没有安装 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 在 cmets 中指出 LARGE_BANNER is also not available on Facebook。