1

I've an android app in production for a very long time, my app has consistently 5k daily users and recently I decided to monitor Android Admob SDK errors (using firebase).

I noticed that some users keep receiving same error, again and again when the sdk tries to load an ad

failed to load: Unable to obtain a JavascriptEngine. (0)

also:

failed to load: Network error. (2)

Network error might sounds that the user is without internet, but my app wont pass by SplashScreen if user has no internet, so if any code tried to load ad at all the user connection was tested prior to it.

These errors are irrecoverable, I mean, when one of them happen to a user, it will happen to all ad formats (banner, interstitital...) and it will be happening forever, no ad will be served to this user at all.
I recently learned that there are some apps available that claim to remove ads, for exemple: https://www.luckypatchers.com/download/ (and many others)

I didnt dig deep enough to check how any of theses apps manage to block admob's work, but clearly they do. My question is, is there a definitive way to check if the Admob is tempered?

Please dont suggest: "test if user has installed 'luckypatchers' there are dozens of apps like this and this test is most likely to fail", I also would like a test which is not going to report on a user who has a legitimate connection problem.

Does anyone know a solution for that? BTW: I was passed the time for google admob to have a method "Admob.TestAdmobOnThisDevice" to simple check it.

Rafael Lima
  • 3,079
  • 3
  • 41
  • 105
  • While you could probably implemet some sort of check for ad disruption, the user will still ultimately be able to bypass it. At the very least, they could remove the validation from your app (and even if automatic patchers won't do it, an actual reverse engineer will). In general, your program is nothing but instructions for the user's device of what to do, so a user willing to change its behaviour will ultimately be able to. The most you can do is make it harder for them, but remember that it could backfire by motivating enthusiasts – abel1502 Oct 22 '21 at 14:46
  • average user wont reverse engineer, he will use out of the shelf solutions... if you think it is pointless to fight against piracy you are probably in the wrong market – Rafael Lima Oct 22 '21 at 16:35

1 Answers1

-1
  • If user is connected to internet and ad is not loading.

  • Then you can use onAdfailed listener and if ads are not loading then you can make the user exit the app (use some delay before making the user exit)

Manjeet deswal
  • 692
  • 2
  • 5
  • 18
  • Your assumption is very wrong, ads can fail due dozens of reasons, if force user to leave the app just because ad failed will create a terrible experience – Rafael Lima Oct 18 '21 at 14:29
  • Did you already try it? – Manjeet deswal Oct 20 '21 at 01:45
  • I dont need to try, I have enough experience to know your idea is wrong. Many reasons can cause admob to call onAdFailed, problems in the admob account, misconfiguration, internet problem, and MAINLY no ads to deliver (this happens very often, simple because there arent ads to show) so catch these errors and assuming that they were intentionally caused by user is a terrible mistake – Rafael Lima Oct 20 '21 at 02:03
  • Yes but on my 5k users, there are always the same users that receive this error "failed to load: Unable to obtain a JavascriptEngine. (0)" – Phantom Lord Aug 21 '23 at 09:28