Use them if you want:
-fast payment
-fast support
Don’t use them if you want:
-big ecpm
-better fillrate
Why?
-they have many bugs in SDK, null pointers exceptions, bad variable types, memory leaks, manifest errors, especialy in android studio
support also…suggest to use eclipse but multidex error when you try to add it to some bigger app, lol
-i tested 200-300 impressions when testing and fixing their bugged sdk, dashboard counted 20;/
-their magic algorithm is just… set of iterators/random and working like that, I ce:
- Downloading all ads from all networks same time
- Generating hashmap
- Showing ads in random from hashmap
When generating hashmap, there is not server connection, all ads are generating offline, they are not comparing ecpm/fill rate in any way, just running 3rd party sdks
How they earn money? They have possibility to display own ads in webview and override normal ads.
More info:
-no targeting ads, they keeps user data like location but it’s not used to generate hashmap with ads, just put into server
-they are storing IMEI/DEVICE ID what is not allowed in Google Play;/
-settings bar in console, to set ecpm isn’t working, how it can if no server connection
-how they counts click? We don’t know but they are using variable called “score” if user clicks ad. So probably it’s also random, based on their overall earnings/click/ecpm in ad network.
-in library code you can find 3 random generators, one…for generating hashmap with ads
-in library code they are generating couple hashmaps with ads, there is no single one to generate it with some server data, all are generated offline with preloaded ads
-priority is also random, infinite hashmap…
To get the same effect as alphagravel use something like that, they have more complicated algorithm to do it, with listeners and checking json response from ad networks, but it’s mostly the same idea:
Random random = new Random();
int numberOfMethods = 4;
switch(random.nextInt(numberOfMethods)) {
case 0:
ad1();
break;
case 1:
ad2();
break;
case 2:
ad3();
break;
case 3:
ad4();
break;
default:
method1();
}