FacebookComponents icon indicating copy to clipboard operation
FacebookComponents copied to clipboard

Re-Update of "Please Update To Audience Network SDK 6.1.0 - September 28, 2020"

Open osmanghaziurdu opened this issue 4 years ago • 13 comments

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

osmanghaziurdu avatar Oct 12 '20 06:10 osmanghaziurdu

Any Update ??????????????????????????

osmanghaziurdu avatar Dec 01 '20 04:12 osmanghaziurdu

Still waiting for the update Nuget for Xamarin Android. Version 5.10.1 has unresolved issues forcing us to use deprecated methods

  1. There is no extension method WithAdListener for IAdLoadConfigBuilder to add an Ad listener while loading Ad.
  2. interstitial_ad.BuildLoadAdConfig() returns IAdLoadConfigBuilder instead of Interstitial.InterstitialLoadConfigBuilder

BilKaz avatar Mar 02 '21 17:03 BilKaz

Just Because Of OLD SDK i moved my app to Android Studio (Java) and leave the Xamarin completely. 😽

osmanghaziurdu avatar Mar 02 '21 18:03 osmanghaziurdu

Audience Network SDK for iOS has recently been updated version 6.3.0 (The latest). Can we expect the same for Android?

BilKaz avatar Mar 07 '21 08:03 BilKaz

It's been a month and still no update. At least please share timeline for the update...

BilKaz avatar Apr 03 '21 08:04 BilKaz

same issue+1 "withAdListener" method not found
not able to add listener into FAN ad

kenchan97 avatar Apr 26 '21 03:04 kenchan97

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.

YoussefR33 avatar May 06 '21 07:05 YoussefR33

I had the same problem - missing WithAdListener method.

For those who encounter it or need fresh version of Audience Network SDK my solution is:

  1. Download fresh version of SDK from Maven repo in AAR extension here: link
  2. 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
  3. Include this binding library project into your VS solution. Now you can use it by C#!

mputnick avatar Jun 15 '21 20:06 mputnick

@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 avatar Jun 22 '21 15:06 BilKaz

@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();
            }
        }
    }
}

mputnick avatar Jun 22 '21 17:06 mputnick

@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. !

eduardoqc183 avatar Jun 28 '21 00:06 eduardoqc183

@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 ` public

	<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.

akghasemi avatar Mar 17 '22 20:03 akghasemi

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)

mhdwaelanjo avatar Feb 09 '24 15:02 mhdwaelanjo