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 中介?

MoPub 横幅广告

MoPub 替代品

如何在 android studio 中添加 Mopub 广告

在 Android 中设置 MoPub 广告

使用 MoPub 进行中介时看不到任何原生 AdMob 广告