Android Question Native Ads Current activity module

joaomoraes83

Member
Licensed User
I am using the @Erel example: https://www.b4x.com/android/forum/threads/any-news-about-native-ads-advanced.88100/#content

I changed the line below but it does not show the ads.

B4X:
Listener.InitializeNewInstance(Application.PackageName & ".main$MyAdListener", Array("UnifiedNativeAd"))  'change 'main' with the current activity module name
for
B4X:
Listener.InitializeNewInstance(Application.PackageName & ".activity1$MyAdListener", Array("UnifiedNativeAd"))  'change 'main' with the current activity module name

I have the following return in the log::
B4X:
UnifiedNativeAd_ReceiveAd

Any tips?
 

joaomoraes83

Member
Licensed User
Thank you @Erel.
I realized what is causing the error.
When I include SlindingMenu code in the same activity, no ads appear.
Is there a way to fix?
Follows the code:
B4X:
#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: false
#End Region

Sub Process_Globals

End Sub

Sub Globals
    Private BannerAd As AdView
    Private IAd As InterstitialAd
    Private sm As SlidingMenu
    Private Panel1 As Panel
End Sub

Sub Activity_Create(FirstTime As Boolean)
    
    If BannerAd.IsInitialized = False Then BannerAd.Initialize2("BannerAd", geral.codBannerAdmob, BannerAd.SIZE_SMART_BANNER)
    Dim height As Int
    
    height=getBannerHeight
    
    Activity.AddView(BannerAd, 0dip, 100%y - height, 100%x, height)
    BannerAd.LoadAd

    If IAd.IsInitialized = False Then IAd.Initialize("iad", geral.codIntersticialAdmob)
    IAd.LoadAd

    Activity.LoadLayout("inicio")

    LoadUnifiedNativeAd
    
    sm.Initialize("sm")
    Dim offset As Int = 20%x
    sm.BehindOffset = offset
    sm.Mode = sm.LEFT
    sm.Menu.LoadLayout("menu")
    
    Dim jo As JavaObject = sm
    jo.RunMethod("setTouchmodeMarginThreshold", Array(50%x))
        
    Dim jo2 As JavaObject = sm
    Dim event As Object = jo2.CreateEventFromUI("com.jeremyfeinstein.slidingmenu.lib.SlidingMenu$OnOpenListener", "Open", Null)
    jo2.RunMethod("setOnOpenListener", Array(event))

    Dim jo3 As JavaObject = sm
    Dim event As Object = jo3.CreateEventFromUI("com.jeremyfeinstein.slidingmenu.lib.SlidingMenu$OnCloseListener", "Close", Null)
    jo3.RunMethod("setOnCloseListener", Array(event))
    
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub NativeAd_FailedToReceiveAd (ErrorCode As String)
    Log("NativeAd_FailedToReceiveAd: " & ErrorCode)
End Sub

Sub NativeAd_AdOpened
    Log("NativeAd_AdOpened")
End Sub

Sub NativeAd_ReceiveAd
    Log("NativeAd_ReceiveAd")
End Sub

Sub LoadUnifiedNativeAd
'    Dim AdUnitId As String = "ca-app-pub-3940256099942544/2247696110"  'Native Advanced TEST
    Dim AdUnitId As String = "ca-app-pub-3940256099942544/1044960115"  'Native Advanced with Video TEST
    
    Dim ctxt As JavaObject
    ctxt.InitializeContext
  
    Dim builder As JavaObject
    builder.InitializeNewInstance("com.google.android.gms.ads.AdLoader.Builder", Array(ctxt, AdUnitId))
  
    Dim onUnifiedAdLoadedListener As Object = builder.CreateEventFromUI("com/google/android/gms/ads/formats/UnifiedNativeAd.OnUnifiedNativeAdLoadedListener".Replace("/", "."), _
       "UnifiedAdLoaded", Null)
    builder.RunMethod("forUnifiedNativeAd", Array(onUnifiedAdLoadedListener))
    
    Dim Listener As JavaObject
    Listener.InitializeNewInstance(Application.PackageName & ".inicio1$MyAdListener", Array("UnifiedNativeAd"))  'change 'main' with the current activity module name
    builder.RunMethod("withAdListener", Array(Listener))
  
    Dim AdLoader As JavaObject = builder.RunMethod("build", Null)

    Dim AdRequestBuilder As JavaObject
    AdRequestBuilder.InitializeNewInstance("com/google/android/gms/ads/AdRequest.Builder".Replace("/", "."), Null)
    AdLoader.RunMethod("loadAd", Array(AdRequestBuilder.RunMethod("build", Null)))
    
    Wait For (builder) UnifiedAdLoaded_Event (MethodName As String, Args() As Object)
 
    Dim NativeUnifiedAd As JavaObject = Args(0)

    Dim NativeUnifiedAdView As JavaObject
    NativeUnifiedAdView.InitializeNewInstance("com/google/android/gms/ads/formats/UnifiedNativeAdView".Replace("/", "."), _
       Array(ctxt))
      
    Dim pNativeAdView As Panel = NativeUnifiedAdView
  
    Dim content As Panel
    content.Initialize("")
    pNativeAdView.AddView(content, 0, 0, 100%x, 300dip)
  
'    Dim lbl As Label
'    lbl.Initialize("")
'    lbl.Text = NativeUnifiedAd.RunMethod("getHeadline", Null)
'    content.AddView(lbl, 10dip, 10dip, 300dip, 50dip)
'    NativeUnifiedAdView.RunMethod("setHeadlineView", Array(lbl))

'    Dim lbl2 As Label
'    lbl2.Initialize("")
'    lbl2.Text = NativeUnifiedAd.RunMethod("getBody", Null)
'    content.AddView(lbl2, 10dip, 60dip, 300dip, 50dip)
'    NativeUnifiedAdView.RunMethod("setBodyView", Array(lbl2))
'   
'    Dim logo As JavaObject = NativeUnifiedAd.RunMethod("getIcon", Null)
'    If logo.IsInitialized Then
'        Dim logoView As Panel
'        logoView.Initialize("")
'        logoView.Background = logo.RunMethod("getDrawable", Null)
'        content.AddView(logoView, 210dip, 0, 100dip, 100dip)
'        NativeUnifiedAdView.RunMethod("setIconView", Array(logoView))
'    End If
    'check if the logo image exists, otherwise upload large image

    Dim vid As JavaObject = NativeUnifiedAd.RunMethod("getVideoController", Null)

    If vid.IsInitialized Then
        Dim MediaView As JavaObject
        MediaView.InitializeNewInstance("com/google/android/gms/ads/formats/MediaView".Replace("/", "."), Array(ctxt))
        content.AddView(MediaView, 10dip, 10dip, 200dip, 100dip) 'esquerda
        'content.AddView(MediaView, 50dip, 50dip, 200dip, 100dip) 'esquerda
        NativeUnifiedAdView.RunMethod("setMediaView", Array(MediaView))
    Else
        'If don't has video, check if is there are images
        Dim images As List = NativeUnifiedAd.RunMethod("getImages", Null)
        If images.IsInitialized And images.Size > 0 Then
            Dim MediaView As JavaObject
            MediaView.InitializeNewInstance("com/google/android/gms/ads/formats/MediaView".Replace("/", "."), Array(ctxt))
            content.AddView(MediaView, 10dip, 60dip, 200dip, 200dip)
            NativeUnifiedAdView.RunMethod("setImageView", Array(MediaView))
        End If
    End If

    NativeUnifiedAdView.RunMethod("setNativeAd", Array(NativeUnifiedAd))
  
    Panel1.AddView(pNativeAdView, 0, 0, 100%x, 200dip)
End Sub


Sub UnifiedNativeAd_FailedToReceiveAd (ErrorCode As String)
    Log("UnifiedNativeAd_FailedToReceiveAd: " & ErrorCode)
End Sub

Sub UnifiedNativeAd_AdOpened
    Log("UnifiedNativeAd_AdOpened")
End Sub

Sub UnifiedNativeAd_ReceiveAd
    Log("UnifiedNativeAd_ReceiveAd")
End Sub

#if Java
public static class MyAdListener extends com.google.android.gms.ads.AdListener {
  
   String eventName;
   public MyAdListener(String s) {
       eventName = s.toLowerCase(BA.cul);
   }
   @Override
   public void onAdClosed() {
       processBA.raiseEventFromDifferentThread(null, null, 0, eventName + "_adclosed", false, null);
   }
   @Override
   public void onAdFailedToLoad(int arg0) {
       processBA.raiseEventFromDifferentThread(null, null, 0, eventName + "_failedtoreceivead", false, new Object[] {String.valueOf(arg0)});
   }
   @Override
   public void onAdLeftApplication() {
       processBA.raiseEventFromDifferentThread(null, null, 0, eventName + "_adleftapplication", false, null);
   }
   @Override
   public void onAdOpened() {
       processBA.raiseEventFromDifferentThread(null, null, 0, eventName + "_adopened", false, null);
   }
   @Override
   public void onAdLoaded() {
       processBA.raiseEventFromDifferentThread(null, null, 0, eventName + "_receivead", false, null);
   }
}
#End If

Sub getBannerHeight As Int
    Dim AdMobHeight As Int
    Dim ScreenHeightScaled As Float
    ScreenHeightScaled = GetDeviceLayoutValues.Height / GetDeviceLayoutValues.Scale
    ' Ad height 32dip: device screen height <= 400
    ' Ad height 50dip: 400 < device screen height <= 720
    ' Ad height 90dip: device screen height > 720
    If ScreenHeightScaled <= 400 Then
        AdMobHeight = 32dip
    Else if ScreenHeightScaled > 400 And ScreenHeightScaled <= 720 Then
        AdMobHeight = 50dip
    Else if ScreenHeightScaled > 720 Then
        AdMobHeight = 90dip
    End If
    
    Return AdMobHeight
End Sub

'INTERSTICIAL
Sub iad_AdClosed 
    If IAd.IsInitialized Then IAd.LoadAd 
End Sub

Sub iad_ReceiveAd
End Sub

Sub iad_FailedToReceiveAd (ErrorCode As String)
    Recarrega_Intersticial
    Log(ErrorCode)
End Sub

Sub iad_adopened
End Sub

Sub iad_PresentScreen
End Sub

Sub Recarrega_Intersticial
    Sleep(2000)
    If Not(IsPaused(Me)) And IAd.IsInitialized Then IAd.LoadAd
End Sub

'BANNER
Sub BannerAd_ReceiveAd
End Sub

Sub BannerAd_FailedToReceiveAd (ErrorCode As String)
    Recarrega_Banner
    Log(ErrorCode)
End Sub

Sub BannerAd_PresentScreen
End Sub

Sub BannerAd_AdScreenDismissed
    Recarrega_Banner 
End Sub

Sub Recarrega_Banner
    Sleep(2000)
    If Not(IsPaused(Me)) And BannerAd.IsInitialized Then BannerAd.LoadAd
End Sub
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…