Don't serve ads to 'unknown location' (admob)

Would it be possible to not serve ads to what google calls ‘unknown location’ ? As many others I’m getting crazy amounts of clicks from this location and since those clicks don’t give any revenue I’d like to rather just not have any revenue from ‘unknown location’. Thanks in advance.

Because of that Unknown location, I’ve disabled banners in my app. I also curious about this kind of option. Probably, its possible to do via mediation. If someone who has big experience of working with mediation platforms, could u share your opinion, IS it possible to disable showing traffic to Unknown? or maybe set some special eCPM for Admob. As we all know Unknown location has terrible eCPM, so it could be also a solution.
Admob customer support replied to me that they’ve fixed it, it is not so. I still get high click rate from this Unknown, so finally today I’ve deleted my site. Seems we should fine solution by ourself and mediation is the way to do research. Any ideas are welcome.
Nice thread.

I’ve seen you have received response from admob, that (in your case) “this high CTR are due to invalid activities”. Therefore, you are basically asking, how to prevent these invalid activities. Well, that is also what I’d like to figure out very much, as totally screwed stats I am seeing in admob reports and the fact someone might be abusing my apps/publisher IDs, are not making me very happy.

If you didn’t already, you might consider contacting admob again, replying that after receiving their response

  • the issue persists (meaning that invalid activities connected to your apps are continuing),
  • assure that you are not behind this invalid activities,
  • ask them to suggest further steps you might need to take to resolve the issue.

Maybe it would be possible to set a low eCPM floor on all apps ? Since these clicks only give $0.01/click.

If I was going to try to determine the location of the user and not show the ads if the location is unknown, this is how I would do it:


boolean locationUnknown=false;
LocationManager locMan = (LocationManager)getApplicationContext().getSystemService(getApplicationContext().LOCATION_SERVICE);
Geocoder Geo = new Geocoder (getApplicationContext());
String locationProvider = locMan.NETWORK_PROVIDER;
// Or use LocationManager.GPS_PROVIDER (requires ACCESS_FINE_LOCATION PERMISSION).
List locations;
Location lastKnownLocation = locMan.getLastKnownLocation(locationProvider);
if (lastKnownLocation!=null) {
	try {
	//if (lastKnownLocation.isFromMockProvider()) locationUnknown=true; ///api level 18 only
		locations = Geo.getFromLocation (lastKnownLocation.getLatitude(),lastKnownLocation.getLongitude(),10);
		if (locations.get(0)!=null) {
			Address add=(Address) (locations.get(0));
			if (add.getCountryCode()==null) locationUnknown=true; else  Toast.makeText(this, "Location = "+add.getCountryCode(), Toast.LENGTH_LONG).show();
		} else locationUnknown=true;

	} catch (Exception e) {
		System.out.println (""+e);
		//deal with cannot get geo from location
	}
}else locationUnknown=true;

if (locationUnknown)  Toast.makeText(this, "Location unknown", Toast.LENGTH_LONG).show();

I’ve tested this some and it gives me location unknown in the emulator. It gives me the correct location in my phone. And it also give the location on my tablet which has no 3g only it has been connected to wi-fi before (it’s getting the location from wi-fi connection point). Only drawback I can see to this is you have to add the permission: “ACCESS_COARSE_LOCATION”. Would be great if yall could also test it some and let us know if it’s working right for yall. Note, this doe not actually fire up the gps or the network location antenna so it doesn’t use any extra battery or anything, it uses the last known location, which doesn’t actually require starting up the gps and getting a fix.

@XdebugX, you made my day!! Amazing idea. I was thinking that it is done via emulator, now you have proved it. Thanks. I’ll try it, and let u know how it works.

Actually… I just realized that it will not work if someone will take our Admob id, and will put in their click-click app… So, again back to the problem?)

Im not so sure they are taking the id’s and making an app for their bot to click. The problem is too widespread for them to be doing all that work. I belive its some crawler app that is downloading apps from google play and then following all the links in those apps.

Indeed, all my affected publishers IDs are related to apps, published on Google Play. Publisher IDs of the apps, published elsewhere (SlideMe, Opera…), are not affected. Do you guys observe the same?

What exactly do you mean by “following all the links in those apps”, technicaly? There are no admob links in the .apk, there are only publisher IDs. One could parse these IDs from the .apks, and then generate ad requests. But I can’t imagine how one could generate clicks this way, unless there is some bot doing this.

By following links I mean it may be running the apps in some type of emulator and sending click events to everything in the app. Kind of like the monkey tester for android.