Объявления Admob не отображаются (XamarinForms + C # + Android) - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь показать нижний баннер в моем приложении, но не могу его показать. Забавно, что он работал просто отлично, но через несколько недель без кодирования он просто перестал работать, и даже не появилось тестовых кодов от Google. Иногда это работает после компиляции, и когда я отключаю телефон и снова закрываю / открываю приложение, оно перестает показывать рекламу снова.

Я также использовал тот же код Admob в созданной мной игре-викторине Unity, и там она отлично работает каждый раз.

PS: я немного новичок в Xamarin и C #, это мое первое приложение.

Вот соответствующий код:


MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:DDP"
x:Class="DDP.MainPage"
BackgroundColor="#3f183d"
Title="My App Title">

<StackLayout BackgroundColor="Transparent" HeightRequest="70" HorizontalOptions="Start" VerticalOptions="Center" WidthRequest="1000">
    <local:AdMobView x:Name="adMobView" HorizontalOptions="FillAndExpand" VerticalOptions="EndAndExpand"/>
</StackLayout>
</ContentPage>

MainPage.xaml.cs

    public MainPage()
    {
        InitializeComponent();

        BindingContext = this;
        adMobView.AdUnitId = AdMobView.codigoAdmob;
    }

AdMobView.cs

using Xamarin.Forms;

namespace DDP
{
    public class AdMobView : View
{

public static readonly BindableProperty AdUnitIdProperty = BindableProperty.Create(
    nameof(AdUnitId),
    typeof(string),
    typeof(AdMobView),
    string.Empty);

public string AdUnitId
{
    get => (string)GetValue(AdUnitIdProperty);
    set => SetValue(AdUnitIdProperty, value);
}

//admob google test code
public static string codigoAdmob = "ca-app-pub-xxxxx/xxxxx";

}

}


AdMobViewRenderer.cs

using System.ComponentModel;
using DDP;
using DDP.Droid;
using Android.Content;
using Android.Gms.Ads;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(AdMobView), typeof(AdMobViewRenderer))]
namespace DDP.Droid
{
    public class AdMobViewRenderer : ViewRenderer<AdMobView, AdView>
    {
        public AdMobViewRenderer(Context context) : base(context) { }

        protected override void         OnElementChanged(ElementChangedEventArgs<AdMobView> e)
    {
        base.OnElementChanged(e);

        if (e.NewElement != null && Control == null)
        {
            SetNativeControl(CreateAdView());
        }
    }

    protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);

        if (e.PropertyName == nameof(AdView.AdUnitId))
            Control.AdUnitId = Element.AdUnitId;
    }

    private AdView CreateAdView()
    {
        var adView = new AdView(Context)
        {
            AdSize = AdSize.SmartBanner,
            AdUnitId = Element.AdUnitId
        };

        adView.LayoutParameters = new LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);

        adView.LoadAd(new AdRequest.Builder().Build());

        return adView;
    }

}

}


MainActivity.cs

//somecode

base.OnCreate(bundle);
MobileAds.Initialize(ApplicationContext, "ca-app-pub-xxxxx/xxxxx");
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());

//somecode

AndroidManifest.xml


Другая информация

Я использую пакет NuGet 'Xamarin.GooglePlayServices.Ads.Lite', и я проверил разрешения для 'Network_State' и 'Internet'

Спасибо!


Обновление 1: журнал Catlog:

--------- beginning of crash
--------- beginning of system
--------- beginning of main
11-19 11:31:04.852 11568 11568 I Ads     : Updating ad debug logging     enablement.
11-19 11:31:06.407 11568 11596 W Ads     : Update ad debug logging enablement as false
11-19 11:31:07.109 11568 11568 I Ads     : Use AdRequest.Builder.addTestDevice("1BE57C53121A02D9EF3DD79A87C60D3C") to get test ads on this device.
11-19 11:31:07.916 11568 11593 W Ads     : Not retrying to fetch app settings
11-19 11:31:08.118 27571 11755 I Ads     : SDK version: afma-sdk-a-v14574021.11400000.1
11-19 11:31:08.901 11568 11568 I Ads     : Ad failed to load : 3

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Я сожалею, что не могу сказать, как это исправить, но я думаю, что это связано с версией Chrome, Chrome отправляет веб-просмотр, который использует admob.У меня была отлично работающая реклама в моих приложениях xamarin для форм на устройстве Nexus 5X с Chrome 60, но обновление до Chrome 70+ сломало все объявления.

0 голосов
/ 17 ноября 2018

Отфильтруйте по TAG из Ads, и вы увидите различные записи в журнале информации и / или предупреждений, касающихся AdMob. Они будут варьироваться от тайм-аутов и сбоев загрузки (обычно связанных с отсутствием доступа к Интернету) до отсутствия обновления объявления, так как оно в настоящее время не отображается в пользовательском интерфейсе (но был создан экземпляр AdView) и т. Д. ...

Пример:

adb logcat -s Ads

Пример вывода (не полный список):

I Ads     : Starting ad request.
I Ads     : SDK version: XXXXXXXXXX
I Ads     : This request is sent from a test device.
I Ads     : Scheduling ad refresh 70000 milliseconds from now.
I Ads     : Ad is not visible. Not refreshing ad.
W Ads     : There was a problem getting an ad response. ErrorCode: 0
W Ads     : Failed to load ad: 0
W Ads     : Not retrying to fetch app settings
W Ads     : Invoke Firebase method getInstance error.
W Ads     : The Google Mobile Ads SDK will not integrate with Firebase. Admob/Firebase integration requires the latest Firebase SDK jar, but Firebase SDK is either missing or out of date
W Ads     : App does not have the required permissions to get location
W Ads     : Timed out waiting for ad response.
W Ads     : Failed to load ad: 2
...