0 second load time for Admob Ads in Android - android

The question is in the context of Admob in Android.
In every activity, the admob ads is taking couple of seconds to load. I want that the Admob Ads should load instantly with the activity.
I have tried couple of solutions but nothing seems to work :(
So i thought of Frameset concept in HTML, if we click on the link, in a particular frame then only that part will refresh and the other part remains static.
So i was hoping for similar solutions in Android, where the admob ads remain static and the rest part of my activity changes accordingly.
Can anyone guide me, on how to implement similar functionality in Android ?
Also if you have any other alternative to the Admob Ads 0 seconds load time, kindly share it.

Admob takes about a couple of seconds because instruction to load admob is called only when activity started. That's why every admob is also reloaded as long as you reload your activity. In addition, this is often a remote call and could take a time.
Solution :
Create a main activity (which contain admob loading) which handle your set of fragments. I mean instead of using activities, you should use fragments handled by only one activity.
So, you can navigate between all of your views using fragment manager without making any change to admob loading (because it owns to main activity)

Related

Interstitial vs AppOpenAds android

Can someone explain as I can't seems to find a proper post about why use Interstitial or AppOpen ad for fullscreen impression exclusively?
I have read google doc, guidelines and already have experience implementing both types of ads, however why shouldn't I just use Interstitial everywhere where I need fullscreen ad including initial loading and vice versa why shouldn't I use appOpen for transitioning?
Will my app be banned by google if I will show appOpen between nav destinations? Should I prefer certain type for maximizing revenue? Is there any technical difference s in caching/requesting/showing ads.
I just don't understand need in having 2 types of fullscreen ads in my apps as well as I can't find proper discussion about why should I prefer one of them or being unreplaceable one by another.
Interstitial vs AppOpenAds android
AppOpenAds use when user pause an app then come back in the app so app open ad show while on the other hand Interstitial add are typically displayed at natural transition points in the flow of an app, such as between activities.

How to avoid re-loading of Admob ads upon configuration change and starting an Activity?

Using the banners sample here, I noticed that if I change the orientation, the ad is gone, and then reloads itself (takes time), so there is a time that nothing is shown, each time I change orientation.
I know it's possible to set configChanges for the activity via the manifest (and it actually works), but this is not a recommended thing to do in general. It has multiple flaws:
In my case, for example, changing the orientation let the toolbar stay on the same height, which is wrong because it should be different on landscape than on portrait.
Going to another Activity the Admob view will still get re-loaded, even though it was loaded before.
When going from portrait to landscape, and vice versa, the ad doesn't get to fit well on the new orientation.
What else can be done to avoid re-loading of ads, on each configuration change?
I want Admob to load ads once (and the rest in the background, for new ones), and then show them, and avoid re-loading when I change orientation. Just show what's best for the current configuration (orientation for example), each time I reach it.
Same goes for going to a new Activity that has an Admob ad. If it loaded before, no need to re-load.
EDIT: I've put a bounty on this, because Google/Firebase support told me via email it's actually possible to cache the ads:
The Ads SDK won't cache ads for you, however you can implement an
'AdManager' style class, most likely a singleton or an instance
attached to your application instance, which can manage caching for
you.
As you recognize it's an Android pattern to destroy and recreate
activities on orientation, instance state is usually saved and
restored via a bundle, but this is not applicable to views.
If you wish to optimize the reload time of the banner view in this
scenario, I would recommend making your ad request via an AdManager
class, and the AdManager can then apply some logic to cache ads such
as your banner view for a certain amount of time, and return the
previous banner if it is still valid for the new request (which you
would make on orientation change).
And :
This idea of caching ads is not implemented by the SDK, as it is
difficult to determine the best caching logic to apply in all cases,
thus it is left to the developer to implement caching that suits their
use case, if desired.
Possibly having a banner ad decoupled from the 'AdView' class would
make for more appropriate cacheable objects, however this is not
currently the case.
Therefore as it is, yes we suggest that in order to prefetch / cache a
banner ad, you need to store the 'AdView'. Instead of using an
AdManager however, another supported and indeed recommended approach
would be to use a ViewModel, see
https://developer.android.com/guide/topics/resources/runtime-changes#RetainingAnObject
and
https://developer.android.com/topic/libraries/architecture/viewmodel.
These are designed for exactly this kind of use case.
If it is indeed possible, I'd like to know exactly how to do it. Please, whoever succeeds in doing it, show in code what can be done.
I don't see clear way how to cache ordinary ads. Nor singleton, nor viewmodel won't help, we can't cache/retain the view itself and there is no public ad object to retain.
However there is AdLoader using which one can load native ads, and retain loaded UnifiedNativeAd object. Then it can be used to set ad in view.
Other ad sdks provide way to prefetch ads though.
P.S. dunno why stack brought this in search results for "android viewmodel" query
Seems that having a native ad is the best option instead of configChanges . The pure data can be saved on the ViewModel of the Fragment/Activity, for example, so that you could re-use it again.
Sadly though, it's a solution you have to implement yourself, including not just how it looks, but also the loading procedure itself, including when to reload it yourself.
There is a lot to read and to implement based on a person's need, so best thing to start is from :
https://developers.google.com/admob/android/native/start
Not sure though if in terms of income, it's about the same as banner ads.
i think that using smart banner would be a good option, because they work for any orientation
To use Smart Banners, specify the constant SMART_BANNER for the ad size:
AdView adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
also check this:
https://firebase.google.com/docs/admob/android/banner#smart_banners

Admob integration in a single activity application with multiple fragments

I am trying to develop an application which have a single activity. I have achieved all the functionality using multiple fragments. I am showing advertisement using Admob in OnCreate of the activity.
Question:
Should I shift Admob code to OnCreate of each fragment for more impressions?
No. This might increase impressions but it not increase your revenue (revenue it a function of clicks not impressions) and may well decrease it (you may start getting lower value impressions because your CTR will drop). It will also unnecessarily complicate your code.

Android - Load Unity3d model/view on app start but show in a different activity

I'm developing an AR app that's going to contain an activity with a Unity3d model. Creating such an activity is something I can do now but I've come across another problem.
To show a unity model in an activity, the latter has to extend the UnityPlayerActivity class. What if I want to load the 3D model as soon as my launch activity starts but show it in one of the following ones? My goal would be to have the user wait for the model to be loaded as the app starts (e.g. when I show them a splash screen) so that when they change activity to the one that contains the AR view the waiting time is minimal.
I know this is possible in iOS and would like to replicate that behaviour in android as well. Any ideas?
As I suspected - there aren't any answers to my question.
I'll answer my question myself with a workaround, then, and wait for someone else to come up or for the creators of Unity to provide us with the same functionality under Android as under iOS.
To achieve the desired effect, I decided to only have 1 activity and multiple fragments. The activity extends UnityPlayerActivity meaning that when it loads, that takes the time Unity needs to load. Then, when navigating throughout the app, I only swap fragments containing entire screens and make use of the UnityPlayer.pause() and UnityPlayer.resume() methods, as well as the setVisibility method to make it go away.
Hope that helps if anyone has any similar issues.

How to avoid unnecessary reloads of Google Ads on my Android App

I made an Andriod App, it's a typing game, that have several levels. The thing is that I'm showing ads in the bottom of the screen every time that the player fail (because if you type wrong, you fail)
So the thing is that every time that the player fail the activity reloads to start again. So with that, the ad is reloading and doing another request.
I try to search if it's any way to avoid this but I was not able.
So what I want to do, is to make and Adrequest just the first time that the game is loaded, and then just put it visible or invisible.
By the way if you want to take a look at the app is in the google play:
Doctor Key
Thank you!
I would redesign your Activity so that it doesn't have to recreate itself every time you start again. Maybe add reset() and setLevel() methods that reinitializes everything and set the state for whatever level you're doing.
Alternatively you could look into using Fragments. Then you simply replace the level fragment, while leaving the ad section in a separate Fragment that would not be affected.

Categories

Resources