确实缺少文档。
例如 Facebook 不需要任何由 MoPub 调节的参数,它会在第一个应用程序启动时成功初始化。 AdColony 和 Vungle(以及其他大多数)将在首次发布时不初始化。这是由于缺乏竞争导致的收入损失。
我们来看看 AdColony,这让我有些头疼。带有 AdColony 初始化的简单 MoPubSDK 初始化如下所示。
SdkConfiguration sdkConfiguration = new SdkConfiguration.Builder("362da1882dfc49f3a33b92ea1708f3a5")
.withMediatedNetworkConfiguration(AdColonyAdapterConfiguration.class.getName(), adColonySettings)
.build();
MoPub.initializeSdk(activity, sdkConfiguration, listener);
好的。但是 AdColonyAdapterConfiguration#initializeNetwork 看起来如何。这给了我们一些思路,就是传递的配置的内容是什么。
不难。传递了两个字符串(appId 和 zoneId)和一个字符串数组(allZoneIds)。
上下阅读 MoPub 文档帮助我找到了 AdColony mediation guide 的说法
据我了解,appId 和 zoneId 是必需的,而 allZoneIds 是可选的?!但是,如果在我的应用程序中使用多个 zoneId?让事情变得简短。这都是错误的。在
AdColonyAdapterConfiguration#initializeNetwork 我们可以发现只有 appId 和 allZoneIds 是真正需要的。
看这里
AllZoneIds 是由 Json.jsonArrayToStringArray 检索的。但是那又是怎么格式化的呢?!让我们结束吧。
让我们看看如何在首次启动时使用 MoPub 初始化 adColony 的综合答案:
Map<String, String> adColonySettings = new HashMap<>();
adColonySettings.put("appId", "yourAppId");
adColonySettings.put("zoneId", "ANYOfYourZoneIds");
adColonySettings.put("allZoneIds", "[\"bannerZoneId, interstitialZoneId\"]");
SdkConfiguration sdkConfiguration = new SdkConfiguration.Builder("moPubId")
.withMediatedNetworkConfiguration(AdColonyAdapterConfiguration.class.getName(), adColonySettings)
.build();
MoPub.initializeSdk(activity, sdkConfiguration, initSdkListener());
另一个示例是 Vungle。像这样初始化它:
Map<String, String> vungleSettings = new HashMap<>();
vungleSettings.put("appId", "vungleAppId");
SdkConfiguration sdkConfiguration = new SdkConfiguration.Builder("moPubId")
.withMediatedNetworkConfiguration(VungleAdapterConfiguration.class.getName(), vungleSettings)
.build();