Xamarin.Forms在Facebook受众网络中的实现 [英] Xamarin.Forms implementation of Facebook Audience Network

查看:10
本文介绍了Xamarin.Forms在Facebook受众网络中的实现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力在我的Xamarin.Forms应用程序中实现Facebook受众网络。 可用的Nuget包是旧的并且具有过时的方法。

我能够自己实现广告,测试间隙广告显示正确,但当其他用户使用我的应用程序时,广告根本不显示。我在日志中看到风扇返回错误代码1001,并显示";No Fill";消息。

我做了什么:

  • 在解决方案中新增Android类解析项目。项目包含来自facebok页面的‘AudienceNetwork.aar`文件。生成操作设置为LibraryProjectZip
  • 我必须添加一些类来修复生成错误:
public partial class AdView
    {
        internal partial class IAdViewLoadConfigBuilderInvoker
        {
            IAdLoadAdConfig IAdLoadConfigBuilder.Build()
            {
                return Build();
            }

            IAdLoadConfigBuilder IAdLoadConfigBuilder.WithBid(string p0)
            {
                return WithBid(p0);
            }
        }
    }

    public partial class InterstitialAd
    {
        IAdLoadConfigBuilder IFullScreenAd.BuildLoadAdConfig()
        {
            return BuildLoadAdConfig();
        }

        IFullScreenAdShowConfigBuilder IFullScreenAd.BuildShowAdConfig()
        {
            return BuildShowAdConfig();
        }

        internal partial class IInterstitialAdLoadConfigBuilderInvoker
        {
            IAdLoadAdConfig IAdLoadConfigBuilder.Build()
            {
                return Build();
            }

            IAdLoadConfigBuilder IAdLoadConfigBuilder.WithBid(string p0)
            {
                return WithBid(p0);
            }
        }

        internal partial class IInterstitialAdShowConfigBuilderInvoker
        {
            IFullScreenAdShowAdConfig IFullScreenAdShowConfigBuilder.Build()
            {
                return Build();
            }
        }
    }

    public abstract partial class NativeAdBase
    {
        internal partial class INativeAdLoadConfigBuilderInvoker
        {

            IAdLoadAdConfig IAdLoadConfigBuilder.Build()
            {
                return Build();
            }

            IAdLoadConfigBuilder IAdLoadConfigBuilder.WithBid(string p0)
            {
                return WithBid(p0);
            }
        }
    }

    public partial class RewardedVideoAd
    {
        IAdLoadConfigBuilder IFullScreenAd.BuildLoadAdConfig()
        {
            return BuildLoadAdConfig();
        }

        IFullScreenAdShowConfigBuilder IFullScreenAd.BuildShowAdConfig()
        {
            return BuildShowAdConfig();
        }

        internal partial class IRewardedVideoAdLoadConfigBuilderInvoker
        {
            IAdLoadAdConfig IAdLoadConfigBuilder.Build()
            {
                return Build();
            }

            IAdLoadConfigBuilder IAdLoadConfigBuilder.WithBid(string p0)
            {
                return WithBid(p0);
            }
        }

        internal partial class IRewardedVideoAdShowConfigBuilderInvoker
        {
            IFullScreenAdShowAdConfig IFullScreenAdShowConfigBuilder.Build()
            {
                return Build();
            }
        }
    }
public abstract partial class AdComponentFrameLayout
    {
        public void SetLayoutParams(ViewGroup.LayoutParams p0)
        {
            SetLayoutParams(p0);
        }
    }

    public abstract partial class AdNativeComponentView
    {
        public void SetLayoutParams(ViewGroup.LayoutParams p0)
        {
            SetLayoutParams(p0);
        }
    }

    internal partial class IInterstitialAdApiInvoker
    {
        IAdLoadConfigBuilder IFullScreenAd.BuildLoadAdConfig()
        {
            return BuildLoadAdConfig();
        }

        IFullScreenAdShowConfigBuilder IFullScreenAd.BuildShowAdConfig()
        {
            return BuildShowAdConfig();
        }
    }

    public partial class InitSettingsBuilder
    {
        AudienceNetworkAds.IInitSettingsBuilder AudienceNetworkAds.IInitSettingsBuilder.WithInitListener(AudienceNetworkAds.IInitListener p0)
        {
            return WithInitListener(p0);
        }

        AudienceNetworkAds.IInitSettingsBuilder AudienceNetworkAds.IInitSettingsBuilder.WithMediationService(string p0)
        {
            return WithMediationService(p0);
        }

        AudienceNetworkAds.IInitSettingsBuilder AudienceNetworkAds.IInitSettingsBuilder.WithPlacementIds(IList<string> p0)
        {
            return WithPlacementIds(p0);
        }
    }

    internal partial class IRewardedVideoAdApiInvoker
    {
        IAdLoadConfigBuilder IFullScreenAd.BuildLoadAdConfig()
        {
            return BuildLoadAdConfig();
        }

        IFullScreenAdShowConfigBuilder IFullScreenAd.BuildShowAdConfig()
        {
            return BuildShowAdConfig();
        }
    }
  • 在MainActivity的Android项目中: AudienceNetworkAds.Initialize(this);
  • InterstitialAdsRenisher
public class InterstitalAdsRenderer : IInterstitalAdsService
    {
        InterstitialAd _interstitial;

        public void Show(string adsId)
        {
            //AdSettings.AddTestDevice("fe9823bf-946e-4a43-b38c-f958d0bfaa31");
            _interstitial = new InterstitialAd(Application.Context, adsId);
            var loadAdConfig = _interstitial.BuildLoadAdConfig()
                .WithAdListener(new InterstitialAdListener(_interstitial))
                .Build();
            _interstitial.LoadAd(loadAdConfig);
        }
    }

    internal class InterstitialAdListener : Java.Lang.Object, IInterstitialAdListener
    {
        private readonly InterstitialAd _interstitial;

        public InterstitialAdListener(InterstitialAd interstitial)
        {
        }

        public void OnAdClicked(IAd p0)
        {
        }

        public void OnAdLoaded(IAd p0)
        {
            _interstitial.Show();
        }

        public void OnError(IAd p0, AdError p1)
        {
            Console.WriteLine("OnError: " + p1.ErrorMessage);
        }

        public void OnLoggingImpression(IAd p0)
        {
        }

        public void OnInterstitialDismissed(IAd p0)
        {
        }

        public void OnInterstitialDisplayed(IAd p0)
        {
        }
    }

正如我前面所说,测试设备(将仿真器添加到TestsDevices中)中的测试广告可以正确显示广告,但在产品上没有广告:/

有人在Xamarin.Forms项目中实现了facebok广告,可以告诉我如何正确执行此操作吗?

推荐答案

此错误通常意味着您尚未登录Facebook应用程序,或者您正在运行应用程序的设备上无法使用Facebook应用程序

这篇关于Xamarin.Forms在Facebook受众网络中的实现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆