«Объявления не найдены» с родной рекламой MoPub и Facebook - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь понять, почему я получаю сообщение об ошибке "Объявления не найдены" .

Ожидаемое

Собственные объявления из сети аудитории Facebook (FAN) для показа в Android RecyclerView показываются так же, как тестовые рекламные блоки, показанные на снимке экрана ниже.

enter image description here

Настройка

Android

Я выполнил настройку Android для нативной рекламы. Приложение не доступно в Play Store, так как оно все еще находится в стадии тестирования.

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

App

enter image description here

Рекламный блок

enter image description here

Сеть

enter image description here

Сегмент

enter image description here

Фактический

Идентификатор тестового рекламного блока 11a17b188668469fb0412708c3d16813 успешно отображается. Однако живая реклама на Facebook не отображается при использовании идентификатора рекламного блока, созданного в консоли MoPub.

Ошибка : "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)

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

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

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

Потенциальные решения

  1. Идентификатор места размещения: В MoPub Facebook был добавлен как сеть, но добавлен неправильный идентификатор места размещения . Я обновил идентификатор места размещения на тот, который был сгенерирован из Менеджера монетизации Facebook в инструментах Business Manager .

При правильном идентификаторе места размещения Facebook Отладчик запросов объявлений показывает запросы, сделанные MoPub.

Менеджер монетизации Facebook

enter image description here

Настройки сети MoPub > Настройка приложения и рекламного блока

enter image description here

Отладчик запроса рекламы в Facebook

enter image description here

  1. Приложение не активировано: В настоящее время приложение находится в тестовом режиме, поэтому оно не отображается в Play Store. Тем не менее, согласно документации Facebook Ваше приложение не сможет получать рекламу от Audience Network до тех пор, пока не будет добавлена ​​информация о выплатах. Информация о выплатах была добавлена, но в документации Facebook не указано, должно ли приложение быть активным как хорошо, чтобы получать объявления.

Я также добавил тестовое устройство с AAID моего телефона на Документация по тестированию Facebook , поэтому не должно быть проблем с живым в Play Store.

1 Ответ

0 голосов
/ 12 января 2019

В MoPub Интеграция сторонних рекламных сетей объясняется, что для Facebook требуется уникальный Рекламный рендерер в дополнение к использованию определенного макета Facebook .

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 для MediaView, AdIconView и AdChoices RelativeLayout в FacebookViewBinder, обратитесь к этому примеру XML-макета. Кроме того, в зависимости от версии SDK Facebook, которую вы интегрируете, вам нужно будет показывать только заголовок объявления или имя рекламодателя. Дополнительную информацию о требованиях реализации 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);
...