MoPub #withMediatedNetworkConfiguration 解释
Posted
技术标签:
【中文标题】MoPub #withMediatedNetworkConfiguration 解释【英文标题】:MoPub #withMediatedNetworkConfiguration explained 【发布时间】:2020-06-04 03:18:00 【问题描述】:恕我直言,MoPub 文档缺少解释可用函数用法的代码示例。这个函数是#withMediatedNetworkConfiguration。
为什么这个功能很重要?在Network SDK initialization 它说
请注意,您可以在 SdkConfiguration.Builder 上调用 .withMediatedNetworkConfiguration() 来传递预初始化所需的网络配置。否则,预计您第一次尝试预初始化中介网络会失败,因为此时没有缓存网络数据。在应用程序的整个生命周期内,您后续的所有预初始化尝试都应该成功。
意思是如果你第一次调用应用程序,只有 MoPub 的 Marketplace 会被初始化。中介网络在初始化期间没有获得所需的参数,将失败。下次启动一切正常。
所以 MoPub 确实让您有机会调用 #withMediatedNetworkConfiguration 来传递所需的参数,即使在首次启动时也是如此。
但是这一切是如何完成的呢?
【问题讨论】:
【参考方案1】:确实缺少文档。
例如 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();
【讨论】:
以上是关于MoPub #withMediatedNetworkConfiguration 解释的主要内容,如果未能解决你的问题,请参考以下文章
如何使用适用于 iOS 的 Admob (google) 设置 MoPub 中介?