【问题标题】:'No Ads Found' With MoPub Native Ads and FacebookMoPub 原生广告和 Facebook 的“未找到广告”
【发布时间】:2019-06-06 18:39:20
【问题描述】:

我正在尝试了解为什么我会收到 “未找到广告” 错误消息。

预期

来自 Facebook Audience Network (FAN) 的原生广告在 Android RecyclerView 供稿中显示的方式与下面屏幕截图中测试广告单元的显示方式相同。

设置

安卓

我已关注Android setup 的原生广告。该应用尚未在 Play 商店上线,因为它仍在测试中。

AndroidManifest.xml

...
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="[app-package-here]">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/logo"
    android:label="@string/app_name"
    android:networkSecurityConfig="@xml/network_security_config"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
        <activity android:name="[app-package-here].MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.mopub.common.privacy.ConsentDialogActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>
        <activity android:name="com.mopub.common.MoPubBrowser" android:configChanges="keyboardHidden|orientation|screenSize"/>
    </application>

</manifest>

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">127.0.0.1</domain>
        <domain includeSubdomains="true">example.com</domain>
        <domain includeSubdomains="true">cdn.example2.com</domain>
    </domain-config>
</network-security-config>

build.gradle(模块)

implementation('com.mopub:mopub-sdk-native-static:5.4.1@aar') {
    transitive = true
}
implementation 'com.facebook.android:audience-network-sdk:5.1.0'
implementation 'com.mopub.mediation:facebookaudiencenetwork:5.1.0.0'

build.gradle(应用程序)

buildscript {
    ext.kotlin_version = '1.3.11'
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://maven.google.com' }
        maven { url "https://s3.amazonaws.com/moat-sdk-builds" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.2.0'
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha09"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    maven { url "https://s3.amazonaws.com/moat-sdk-builds" }
    }
}

MainActivity

    val sdkConfiguration = SdkConfiguration.Builder([ad-unit-id-here])
            .build()
    MoPub.initializeSdk(this, sdkConfiguration, initSdkListener())

活动/片段

private fun populateAdapterType() {
    moPubAdapter = MoPubRecyclerAdapter(activity!!, adapter,
                MoPubNativeAdPositioning.MoPubServerPositioning())
    val moPubStaticNativeAdRenderer = MoPubStaticNativeAdRenderer(
           ViewBinder.Builder(R.layout.native_ad_list_item)
                .titleId(R.id.native_title)
                .textId(R.id.native_text)
                .mainImageId(R.id.native_main_image)
                .iconImageId(R.id.native_icon_image)
                .callToActionId(R.id.native_cta)
                .privacyInformationIconImageId(R.id.native_privacy_information_icon_image)
                .build()
    )
    moPubAdapter.registerAdRenderer(moPubStaticNativeAdRenderer)
    contentRecyclerView.adapter = moPubAdapter
    moPubAdapter.loadAds([ad-unit-id-here])
}

MoPub 控制台

应用

广告单元

网络

实际

测试广告单元 ID 11a17b188668469fb0412708c3d16813 已成功展示。但是,当使用在 MoPub 控制台中创建的广告单元 ID 时,不会显示实时 Facebook 广告。

错误:“MoPubNetworkError:未找到广告单元的广告”

完全错误

2019-01-11 18:46:12.312 29624-29624/[app-package-here] D/MoPub:MoPubNative 加载广告来自:https://ads.mopub.com/m/ad?id=[ad-id-here]&nv=5.4.1&dn=Google%2CPixel%202%2Cwalleye&bundle=[app-package-here]&z=-0800&o=p&w=1080&h=1920&sc=2.625&mcc=310&mnc=260&cn=Google%20Fi&ct=2&av=0.15&udid=mp_tmpl_advertising_id&dnt=mp_tmpl_do_not_track&gdpr_applies=0&force_gdpr_applies=0&current_consent_status=unknown&MAGIC_NO=0

2019-01-11 18:46:12.689 29624-29624/[app-package-here] D/MoPub:尝试调用自定义事件:com.mopub.nativeads.FacebookNative

2019-01-11 18:46:13.114 29624-29624/[app-package-here] D/MoPub:成功命中跟踪端点:https://ads.mopub.com/m/attempt

2019-01-11 18:46:13.205 29624-29624/[app-package-here] W/MoPub:MoPubNative.onNativeAdLoaded com.mopub.nativeads.CustomEventNativeAdapter@708f83c

2019-01-11 18:46:13.206 29624-29624/[app-package-here] V/MoPub:原生广告加载失败并出现错误:未为 CustomEventNative 注册所需的渲染器..

2019-01-11 18:46:13.394 29624-29624/[app-package-here] D/MoPub:原生广告请求失败。

com.mopub.network.MoPubNetworkError:找不到广告单元的广告。

在 com.mopub.network.MultiAdResponse.(MultiAdResponse.java:157)

在 com.mopub.network.MultiAdRequest.parseNetworkResponse(MultiAdRequest.java:96)

在 com.mopub.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:132)

在 com.mopub.volley.NetworkDispatcher.run(NetworkDispatcher.java:87)

可能的解决方案

  1. 展示位置 ID: 在 MoPub 中将 Facebook 添加为网络,但添加了错误的 展示位置 ID。我已将展示位置 ID 更新为 Facebook 获利管理器在 Business Manager 工具下生成的 ID。

使用正确的展示位置 ID,Facebook Ad Request Debugger 会显示 MoPub 发出的请求。

Facebook 盈利管理器

MoPub 网络设置 > 应用和广告单元设置

Facebook 广告请求调试器

  1. 应用未上线:目前该应用处于测试模式,因此未在 Play 商店上线。但是,根据 Facebook 的文档在添加付款信息之前,您的应用将无法接收 Audience Network 广告。已经添加了付款信息,但 Facebook 的文档并未指定应用是否必须上线以及接收广告。

我还根据Facebook's testing documentation 添加了一个带有我手机 AAID 的测试设备,因此不在 Play 商店上直播应该不是问题。

【问题讨论】:

    标签: android facebook mopub facebook-audience-network


    【解决方案1】:

    在 MoPub 的 Integrating 3rd Party Ad Networks 下,它解释说除了使用 specific Facebook layout 之外,Facebook 还需要一个唯一的 Ad Renderer

    FacebookAdRenderer facebookAdRenderer = new FacebookAdRenderer(
    new FacebookAdRenderer.FacebookViewBinder.Builder(R.layout.native_ad_list_item)
        .titleId(R.id.native_title)
        .textId(R.id.native_text)
        // Binding to new layouts from Facebook 4.99.0+
        .mediaViewId(R.id.native_main_image)
        .adIconViewId(R.id.native_icon_image)
        .adChoicesRelativeLayoutId(R.id.native_ad_choices_relative_layout)
        .advertiserNameId(R.id.native_title) // Bind either the titleId or advertiserNameId depending on the FB SDK version
        // End of binding to new layouts
        .callToActionId(R.id.native_cta)
        .build());
    

    要了解在您的 XML 中为 FacebookViewBinder 中的 MediaView、AdIconView 和 AdChoices RelativeLayout 使用哪些特定布局元素,请参考此 XML 布局示例。此外,根据您集成的 Facebook SDK 版本,您只需显示广告标题或广告商名称。有关 Facebook 实施要求的更多信息,请查看本文。

    然后,注册您的广告渲染器,如下所示。您的 classThatRegistersAdRenderers 取决于您使用的原生广告集成。请记住最后注册您的 MoPubStaticNativeAdRenderer 实例。

    // MoPubRecyclerAdapter
    MoPubRecyclerAdapter classThatRegistersAdRenderers = new MoPubRecyclerAdapter(...);
    
    // MoPubStreamAdPlacer
    MoPubStreamAdPlacer classThatRegistersAdRenderers = new MoPubStreamAdPlacer(...);
    
    // MoPubAdAdapter
    MoPubAdAdapter classThatRegistersAdRenderers = new MoPubAdAdapter(...);
    
    // MoPubNative
    MoPubNative classThatRegistersAdRenderers = new MoPubNative(...); 
    
    classThatRegistersAdRenderers.registerAdRenderer(
       googlePlayServicesAdRenderer);
    
    classThatRegistersAdRenderers.registerAdRenderer(
      flurryNativeAdRenderer);
    
    classThatRegistersAdRenderers.registerAdRenderer(facebookAdRenderer);
    
    classThatRegistersAdRenderers.registerAdRenderer(staticAdRender);
    

    【讨论】:

      【解决方案2】:

      当您在 Facebook 中使用 Mopub 中介时,您必须使用 FacebookAdRenderer 代替 MoPubStaticNativeAdRenderer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-06
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        相关资源
        最近更新 更多