FacebookComponents
FacebookComponents copied to clipboard
Re-Update of "Please Update To Audience Network SDK 6.1.0 - September 28, 2020"
Latest Version Of Facebook Audience Network Is 6.1.0 but Current Nuget Version is 5.10.1 . Please Update the Package as soon As Possible as old SDKs effect Ads integration and Income. Thanks
Audience Network SDK 6.1.0 - September 28, 2020 : https://developers.facebook.com/docs/audience-network/changelog-android#6_1_0
Any Update ??????????????????????????
Still waiting for the update Nuget for Xamarin Android. Version 5.10.1 has unresolved issues forcing us to use deprecated methods
- There is no extension method
WithAdListener
forIAdLoadConfigBuilder
to add an Ad listener while loading Ad. -
interstitial_ad.BuildLoadAdConfig()
returnsIAdLoadConfigBuilder
instead ofInterstitial.InterstitialLoadConfigBuilder
Just Because Of OLD SDK i moved my app to Android Studio (Java) and leave the Xamarin completely. 😽
Audience Network SDK for iOS has recently been updated version 6.3.0 (The latest). Can we expect the same for Android?
It's been a month and still no update. At least please share timeline for the update...
same issue+1
"withAdListener" method not found
not able to add listener into FAN ad
the binding of facebook audience network its pretty easy , there is some gaps for methods 'WithAdListener' and 'Build' , but it can be override with few Jni calls. I have a ready DLL for sdk 6.4 , its just i m not familiar with making a Nuget Package , and i m not sure if its allowed to share a DLL link here.
I had the same problem - missing WithAdListener
method.
For those who encounter it or need fresh version of Audience Network SDK my solution is:
- Download fresh version of SDK from Maven repo in AAR extension here: link
- Create binding library for this AAR (documentation). While building this project I had error of type "Class does not implement interface method". The solution is on this page
- Include this binding library project into your VS solution. Now you can use it by C#!
@r33software / @mputnick
Please share metadata.xml as I have tried to generate the dll (using existing dll metadata for 5.10.1) but there are too many warnings I don't understand. Should I ignore them?
My metadata.xml
<attr path="/api/package[@name='com.facebook.ads']/class[@name='MediaView']" name="extends">android.widget.RelativeLayout</attr>
<remove-node path="/api/package[contains(@name, 'com.facebook.ads.internal')]" />
<attr path="/api/package[@name='com.facebook.ads']/class[@name='InterstitialAd']/method[@name='buildLoadAdConfig' and count(parameter)=0]" name="managedReturn">IAdLoadConfigBuilder</attr>
<attr path="/api/package[@name='com.facebook.ads']/class[@name='InterstitialAd']/method[@name='buildShowAdConfig' and count(parameter)=0]" name="managedReturn">IFullScreenAdShowConfigBuilder</attr>
<attr path="/api/package[@name='com.facebook.ads']/class[@name='RewardedVideoAd']/method[@name='buildLoadAdConfig' and count(parameter)=0]" name="managedReturn">IAdLoadConfigBuilder</attr>
<attr path="/api/package[@name='com.facebook.ads']/class[@name='RewardedVideoAd']/method[@name='buildShowAdConfig' and count(parameter)=0]" name="managedReturn">IFullScreenAdShowConfigBuilder</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='InterstitialAd.InterstitialAdLoadConfigBuilder']/method[@name='build' and count(parameter)=0]" name="managedReturn">IAdLoadAdConfig</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='InterstitialAd.InterstitialAdLoadConfigBuilder']/method[@name='withBid' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="managedReturn">IAdLoadConfigBuilder</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='InterstitialAd.InterstitialAdShowConfigBuilder']/method[@name='build' and count(parameter)=0]" name="managedReturn">IFullScreenAdShowAdConfig</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='RewardedVideoAd.RewardedVideoAdLoadConfigBuilder']/method[@name='build' and count(parameter)=0]" name="managedReturn">IAdLoadAdConfig</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='RewardedVideoAd.RewardedVideoAdLoadConfigBuilder']/method[@name='withBid' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="managedReturn">IAdLoadConfigBuilder</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='RewardedVideoAd.RewardedVideoAdShowConfigBuilder']/method[@name='build' and count(parameter)=0]" name="managedReturn">IFullScreenAdShowAdConfig</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='NativeAdBase.NativeAdLoadConfigBuilder']/method[@name='build' and count(parameter)=0]" name="managedReturn">IAdLoadAdConfig</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='NativeAdBase.NativeAdLoadConfigBuilder']/method[@name='withBid' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="managedReturn">IAdLoadConfigBuilder</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='AdView.AdViewLoadConfigBuilder']/method[@name='build' and count(parameter)=0]" name="managedReturn">IAdLoadAdConfig</attr>
<attr path="/api/package[@name='com.facebook.ads']/interface[@name='AdView.AdViewLoadConfigBuilder']/method[@name='withBid' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="managedReturn">IAdLoadConfigBuilder</attr>
@BilKaz
I didn't edit metadata.xml file. Instead of this I created partial classes definitions. I don't sure if it's OK to do so with void returning methods, but it helps to avoid any errors and warnings.
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Facebook.Ads.Internal.Api
{
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();
}
}
}
and
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Facebook.Ads
{
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();
}
}
}
}
@BilKaz
I didn't edit metadata.xml file. Instead of this I created partial classes definitions. I don't sure if it's OK to do so with void returning methods, but it helps to avoid any errors and warnings.
using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Com.Facebook.Ads.Internal.Api { 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(); } } }
and
using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Com.Facebook.Ads { 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(); } } } }
It worked !!! Thank you. !
@BilKaz
I didn't edit metadata.xml file. Instead of this I created partial classes definitions. I don't sure if it's OK to do so with void returning methods, but it helps to avoid any errors and warnings.
using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Com.Facebook.Ads.Internal.Api { 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(); } } }
and
using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Com.Facebook.Ads { 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(); } } } }
Hi, I am having the same problem ,where should I add this codes? I built binding library and I had some issues
and I removed them by following change in metadata.xml
`
<remove-node path="/api/package[@name='com.facebook.ads']/class[@name='InterstitialAd']" name="visibility">public</remove-node>
<remove-node path="/api/package[@name='com.facebook.ads']/class[@name='RewardedInterstitialAd']" name="visibility">public</remove-node>
<remove-node path="/api/package[@name='com.facebook.ads']/class[@name='RewardedVideoAd']" name="visibility">public</remove-node>
<remove-node path="/api/package[@name='com.facebook.ads']/class[@name='NativeAdBase']" name="visibility">public</remove-node>
<remove-node path="/api/package[@name='com.facebook.ads.internal.api']/class[@name='InitSettingsBuilder']" name="visibility">public</remove-node>
<remove-node path="/api/package[@name='com.facebook.ads.internal.api']/class[@name='AdComponentFrameLayout']" name="visibility">public</remove-node>
<remove-node path="/api/package[@name='com.facebook.ads.internal.api']/class[@name='AdNativeComponentView']" name="visibility">public</remove-node>`
but when I add those codes to my project that references the this binding library , then I have a lot of error.
We can use this library now Facebook Audience Network SDK for .NET for Android Anjo.Android.Facebook.AudienceNetwork (>= 6.16.0) and for login Anjo.Android.Facebook (>= 16.2.0)