Italian Problema con firebase ed admob

LucaMs

Expert
Licensed User
Longtime User
Una prova da fare... A volte admob per problemi di localizzazione non ti invia i banner se sei connesso con il wifi.
A volte è vero anche il contrario però:p
Possono esserci "problemi" di localizzazione ma intesa come zona del mondo da cui sei connesso; come sei connesso non gli interessa di certo (né penso che possa rilevarlo).
 

marco_2063

Member
Licensed User
Longtime User
Buongiorno, non sono sparito, anzi, ringrazio tutti coloro che hanno contribuito al mio problema. Ho risolto e penso di avere anche alcune risposte per chi si trovasse nella mia stessa situazione.
Pubblico i codici che sto utilizzando in questo momento e che stanno funzionando correttamente. Ovviamente il codice è specifico per la mie esigenze, come ad esempio lo snippet per google map.

Elenco le problematiche che ho incontrato con le relative soluzioni:

PRIMO
I banner venivano visualizzati solo se l'installazione avveniva da pc (tramite bridge) una volta caricata su google-play i banner sparivano. (mancavano i permessi internet)
B4X:
AddPermission("android.permission.INTERNET")
AddPermission("android.permission.ACCESS_NETWORK_STATE")
AddPermission("com.ibm.jsse.IBMJSSEProvider")

SECONDO
I banner venivano visualizzati solo su una parte dei telefoni che scaricavano l'app da google-play (i banner appariranno nell'arco di un paio di giorni, indipendentemente dal fatto di essere collegati tramite wifi o tramite connessione dati del telefono e ciò non dipende da problemi di visualizzazione delle views che vengono coperte da altre.. almeno nel mio caso)

E' importante che il pacchetto di compilazione sia lo stesso sia in google-play che in admob che in firebase ricordare sempre di scaricare l'ultima versione del file google-services.json dopo ogni modifica al progetto in firebase che admob. Inserire nel Manifest le righe per la creazione di risorse da file per i servizi firebase (ultime tre righe nel manifest)

Di seguito elenco tutti i codici integrali che sto usando:

MANIFEST
B4X:
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: http://www.b4x.com/forum/showthread.php?p=78136
AddManifestText( <permission
          android:name="$PACKAGE$.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
      <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
 

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="26"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
   
AddApplicationText(
<meta-data
  android:name="com.google.android.geo.API_KEY"
  android:value="AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"/>
 
)


SetApplicationAttribute(android:theme, "@style/DarkTheme")
CreateResource(values-v20, theme.xml,
<resources>
    <style
        name="DarkTheme" parent="@android:style/Theme.Material.NoActionBar.Fullscreen">
    </style>
</resources>
)
CreateResource(values-v14, theme.xml,
<resources>
    <style
        name="DarkTheme" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen">
    </style>
</resources>
)


SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'CreateResourceFromFile(Macro, Themes.DarkTheme)
'End of default text.

AddPermission("android.permission.INTERNET")
AddPermission("android.permission.ACCESS_NETWORK_STATE")
AddPermission("com.ibm.jsse.IBMJSSEProvider")


AddManifestText(<uses-feature android:name="android.hardware.location.gps"/>)


CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)
CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)
CreateResourceFromFile(Macro, FirebaseAdMob.FirebaseAds)


QUESTO E' IL CODICE

B4X:
Sub Globals
 
    Dim AdView1 As AdView
    Dim mwAdInterstitial As InterstitialAd
   
   
End Sub

Sub Activity_Create(FirstTime As Boolean)
  
      
    Activity.LoadLayout("1")
  
    'Interstitial
    mwAdInterstitial.Initialize("mwadi","ca-app-pub-XXXXXXXXXXXXXXX/XXXXXXXXXX")
    mwAdInterstitial.LoadAd
    If mwAdInterstitial.Ready Then mwAdInterstitial.Show
  
    AdView1.Initialize2("AdView1", "ca-app-pub-XXXXXXXXXXXXXXX/XXXXXXXXXX", AdView1.SIZE_SMART_BANNER)
  
  
    Dim height As Int
    If GetDeviceLayoutValues.ApproximateScreenSize < 6 Then
        'phones
        If 100%x > 100%y Then height = 32dip Else height = 50dip
    Else
        'tablets
        height = 50dip
    End If
    Activity.AddView(AdView1, 0dip, 0dip,  100%x, height)
  
    AdView1.LoadAd
    AdView1.Visible = True
  
End Sub




Sub AdView1_FailedToReceiveAd (ErrorCode As String)
    Log("failed: " & ErrorCode)
End Sub
Sub AdView1_ReceiveAd
    Log("received")
End Sub
Sub AdView1_AdScreenDismissed
    Log("screen dismissed")
End Sub





Sub mwadi_AdClosed
    'you can call LoadAd again here to queue the next ad
    mwAdInterstitial.LoadAd
End Sub
Sub mwadi_AdOpened
    Log("ad opened")
    If mwAdInterstitial.Ready Then mwAdInterstitial.Show
End Sub
Sub mwadi_AdLoaded
    Log("ad loaded")
    'visualizza_pubb
    If mwAdInterstitial.Ready Then mwAdInterstitial.Show
End Sub
Sub mwadi_AdFailedToLoad (ErrorMessage As String)
    Log("failed to load ad: " & ErrorMessage)
    mwAdInterstitial.LoadAd
End Sub

Spero che questi appunti possano essere di aiuto.
Ringrazio ancora tutti coloro che hanno contribuito alla risoluzione.

Marco
 
Top