Xamarin.Forms在Facebook受众网络中的实现 [英] Xamarin.Forms implementation of Facebook Audience Network
本文介绍了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屋!
查看全文