Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Quickly Comparing Herby and App Annie
Magas and I built a spreadsheet to allow you to quickly compare Herby data to App Annie data. Here’s a link, and there’s a downloadable version above that you could upload to google docs.
Zoomed way out, the spreadsheet looks like this:

At the top is a summary area, in the middle is an area for the Herby data, and at the bottom is a summary.
- Make a copy of the spreadsheet.
- Now, go to Herby, to the (a) overview (although there’s no reason you couldn’t specify any specific game), then (b) choose the breakdown by ad network. (Link). Set your (c) date range.

3. Optionally, sort by ad network, then highlight all the data in the table (I like to start at the bottom right), and copy it.

4. Paste the data into the spreadsheet, putting the headings on top of the matching headings in the Herby area.


6. Go to App Annie, and click on Ad Revenue. (Link) Set the date range of interest.
7. Select all the data in the table here, and copy it.

8. Now paste the data into the App Annie area.


9. Lastly, scroll up to the top and check that things worked nicely.

On line 4 is ‘Overall’ which totals the numbers from the Herby and App Annie areas. Lines 9 through 20 specify the ad network to be summarized — ex. every line that starts with ‘Vungle’ in the data below will be added up and summarized on the line 20, as it starts with Vungle.
On line 6 is ‘total below’. This is the sum of all of the summaries.
Line 7, ‘missing’, is the one you need to check. It is the grand total minus the total below, and should be 0. If it is not, something is wrong (like, for example, there is a new ad network that isn’t being summarized.)
10. Enjoy your nice, clean comparison results.
Bonus: How does this work?
The key formula is
=SUMIF(A$40:A$105, Concat(A13,”*”), B$40:B$105)

Linking Chocolate Placements in Herby
Note: this will make an entry for Chocolate show up in the Herby dashboard. The instructions may change when we make it so that you can get info from chocolate for all the mediated ad networks.
Nomenclature
We have two important things:
- Games
- Ad placements
- (and ad networks, for large quantities of ‘two’)
We need to link the two of them together so that when an ad network tells us that a specific game placement showed X number of ads for Y dollars, we know which game earned the money and impressions.
Make It So
In this example, we are going to link Cops and Robbers Jailbreak with its ad placement in Chocolate.
Go into Herby. I’m not sure if you need privileged permissions or not for this process. Go to Config -> Linked Accounts.

This will bring up a page showing all the ad networks. Find Chocolate in the list and click on it.

You should see something like this:

Click on the clipboard icon that says, ‘Get placement list’

We can see that we have information on a placement for Cops Vs Robbers: Jailbreak, but that it isn’t actually linked. [Also, by the way, ‘Linked ITR’ means ‘Linked In This Request’, meaning, the linked was done automatically just now because you hit the clipboard button. Some ad networks can do this, and some can, depending on whether there is enough information to tell which game the placement corresponds to.]
Next, we are going to the page for the game that we care about. From the side menu, go to Config -> Games, and then click on your game of interest.

If you scroll down, you’ll see a list of ad networks and placements that are associated with the given game. Chocolate is not in the list. We’re going to click on the ‘Add Existing Placement’ button.

Once you do that, you’ll see more placements than you can shake a stick at! Type in some sort of filter, find your placement, and hit the ‘plus’ button beside it.

You’ll be greeted with success:

Review
Incidentally, if you go back to the linked placements page where we started this blog post, you’ll see that it is now linked,

and if you look at the revenue breakdown for the game by ad network, you’ll see the details.

How To Create Users In The Training Blog
[Note: these instructions need to be tested, but I believe they are correct.]
Before you start, you’ll need to know the person’s name and e-mail address.
To create users in the training blog,
- sign into the training blog with an admin account.
- On the sidebar menu, click on WP Membership -> Members.

3. Click on the ‘Add New’ button at the top.
4. Fill in the fields as follows:
- the standard username is a user’s first name followed by their last name, with no spaces, all letters in lowercase
- put in ‘changeme’ for the password
- set a membership level. [We don’t use this as much as we used to.]
- fill in the first and last name fields.

5. Hit the ‘Add New Member’ button at the bottom.
6. Tell the user that they can log in to http://iactivebooks.aeriacanada.com using <username> and <password>, and to then go to http://iactivebooks.aeriacanada.com/wp-admin/profile.php and click on ‘Generate Password’, and ‘Update Profile’.

Note: There seem to be two different places to log in; one that lets you read articles, and one that lets you write articles. It’s annoying!

How to change vungle Id to a published windows game
This process is very simple if the game is already published and you need to change the vungle ID.
Step #1
First you need to sync to the correct branch of the game (they have windows on the name).
NOTE: The windows games were created in Unity 2018.1.6f1 but sometimes when switching to a branch of windows and open it, it will say that you need to update scripts form a 5.6.2p1 unity version, just go ahead and click continue.
Step #2
Open the file “VungleAdManager” and edit these lines with the new ID information from vungle:
The first one is the App ID from vungle and the second one is the Placement ID from vungle.
Step #3
You are all done. You just need to do the build in unity .
NOTE: before doing the build you need to go to the menu “Tools > Vungle > Prepare Windows 10 Build”, and you need to do this thing every time you open unity and want to create a build. If you don’t do this, you will get an error after trying to create a build.
Here are my settings for the build in Unity.
Step #4
After finishing the build in Unity you need open the visual studio project by opening this file:
Then in visual studio you need to set the project to release, x64 and click “local machine” to test the game and check that you have ads (or test ads) and everything works.
Step #5
If everything works you need to do the association to the windows developer game, in the solution explorer (right bar) right click on the project and select “Store > Associate app with the store”
Then with the Aeria account logged (ask Eduardo, Jorge or Ernesto for account Info), you select the game (already published) and click next then associate
If everything was correct, you should see in the output window “The association was successful.”
Step #6
After this you need to do the final build for the game, in the solution explorer (right bar) right click on the project and select “Store > Create app package”
You should have something like this and you need to select the option with the already published game and click “Next” (if it doesn’t appear, that sometimes happens, you need to re-do the association (step #5 and #6) until it appears, sometimes it is at 1st, sometimes at 3rd time) and click next
In the next part you need to set up the version and all releases as “Master” as shown below:
Then hit create and wait for the build to finish (it can take 15-30 mins)
NOTE: If you get an error of a win file .dll, you need to disable your antivirus and try again
After that, you can follow this tutorial to upload the final package to the windows developer account
http://iactivebooks.aeriacanada.com/?p=1292
Adding an Ad Network to Herby
These are my notes, and hopefully a guide to future coders, on how to add an ad network to Herby. [It assumes you already have the source and are able to run it; there are some documents on google drive with details.]
Project Organization
Here are the interesting things I see.
handlers/adHandler.js -> forwards all calls that make an ad network do things to classes specific to those ad networks (which are all in handlers/adNetwork/).
handlers/cron.js -> clear schedules things in the system to get data, using daily queues (and other queues), based on something called queueHandler.
Data At Rest
Looking at the models (models/*.js) and the data in a copy of the MongoDB, we see things like this:
Ad Network
company *: string
adnetwork *: string
name *: string
user: string
key: string
pass: string
accountId: string
adClientId: string
token { complex type }
ok_status: boolean
message: string
active: boolean
created: date
created_by: (user)
updated: date
updated_by: (user)
If we have multiple ad network accounts (ex. one for TopGameStudio and one for CrystalBuffalo) they each have their own entries in the database.
You can add a new instance of an ad network in Herby by choosing “Config” -> “Linked Accounts”, and then “+ Add New”.
The First Function
adHandler.js forwards calls to different ad networks. This is the first function, implemented by all the ad networks except AdMob:
requestConnection() ← connect()
Getting the First Function Going
The requestConnection() function appears to exist so we can try and see if we have things right (ex. right URL and right credentials.) It is called for the AdNetwork through adHandler.connect() by adnetworkController.checkConnection(), which is tied to the admin URL route “/adnetwork/connect/:id” which is (2) referenced in config_adnetwork_single.pug, which is rendered by adnetworkController.showAdnetworkById() tied to the “/adnetwork/:id” admin route. (1) We can get at that route through config_adnetworks.pug, rendered by adnetworkController.showAdnetworks(), tied to the “/adnetwork” admin route.
So, we can (1) go to http://herby.aeriacanada.com/config/adnetwork, and (2) click on and ad network. Aha. ![]()
On the edit an ad network page, there are icons (coming from Font Awesome). fa-edit (the pencil on paper) to edit the network; fa-clipboard-check to get the placements; fa-question-circle that tells about getting the placement list (?), and, if the ad network is not in ‘ok’ status, fa-plug to test the connection.
Now that we have a URL that fills in the :id field for the ad network, we could change it to invoke the connect handler ourselves. I’m wondering if there is a downside to doing that as Homero went to extra work to make it unavailable under normal conditions.
Firing up my own instance of Herby, I went into the database, changed the ok_status for one of the networks to false, and sure enough, a plug icon showed up. Clicking on it, I got an error. (Mind you, the error message didn’t show the expected error. I think something is amiss in the error handler).
Create a connect method that returns a 404
I’m adding chocolate mediation. I’ve created a file called handlers/adNetwork/chocolateHandler.js like this:
const rp = require('request-promise');
exports.requestConnection = function(adNetwork) {
const getURL = "http://www.foo.bar/404";
const options = {
url: getURL,
json: true
}
return rp(options)
}
It should just cause a 404 error when invoked.
In handlers/adHandler.js, I added:
const ChocolateHandler = require('./adNetwork/chocolateHandler.js')
to the start, and
Chocolate:ChocolateHandler.requestConnection,
in exports.connect.
It turned out that I also needed to add something so this network would show up in the list. In helpers.js, in exports.adNetworkList, I added:
{
id: 'Chocolate',
display: 'Chocolate'
}
The ‘id’ field is used for internal strings (ie. looking things up in dictionaries), and the ‘display’ field is user-facing.
It also turned out that it’d be nice to have an icon.
Once again in helpers.js, this time in exports.iconClass, I added:
case 'Chocolate': return 'aa_chocolate'; break;
and to styles.css, I added:
.aa_chocolate {
background-position: -144px-36px;
}
(I chose an icon from app annie’s image of icons that vaguely resembled the chocolate icon.)
Performing an Actual Connection
https://optimusprime.vdopia.com/library/reportApi.php? auth=publisher& publisher_id=13075& ad_unit_id=12& apikey=bb33153e44cd4bf4a8a411584cdb326d& source=reporting_ssp_stats_admin& field=date,publisher,app_site,ad_unit,impressions,revenue,ecpm& start_date=2019-02-23& end_date=2019-02-23
Let’s do this:
- ‘accountId’ -> ‘publisher_id’
- ‘key’ -> ‘apikey’
- ‘adClientId’ -> ‘ad_unit_id’
Let’s also just grab the URL for one date and see what we get, for use in our connection function. (If we get no actual data, we know things are bad; it doesn’t give us a 404 though).
Here’s my code, which I think works:
exports.requestConnection = function(adNetwork)
{
const testDateString = moment().add(-1, 'days').format('YYYY-MM-DD')
const baseURL = "https://optimusprime.vdopia.com/library/reportApi.php?"
const parameters = new URLSearchParams({
auth: 'publisher',
publisher_id: adNetwork.accountId,
ad_unit_id: adNetwork.adClientId,
apikey: adNetwork.key,
source: 'reporting_ssp_stats_admin',
field: ['date', 'publisher', 'app_site', 'ad_unit', 'impressions', 'revenue', 'ecpm'],
start_date: testDateString,
end_date: testDateString
})
const options = {
url: baseURL + parameters.toString(),
json: true
}
return rp(options)
}
Adding the Needed Info to the Database
Okay, in the database, we need to enter in the accountId, key, and user.
The view for editing ad networks is “views/config_adnetwork_edit.pug”. It defines collapsible sections for the user, password, key, and token. Somehow, when you are on the right page, those fields hide and show depending upon the ad network you select.
Turns out it is controlled by a file called “public/javascripts/modules/smallFeatures/config_adnetwork_edit.js”. (It took me awhile to find this; finally I searched all files by ‘AdMob’).
* GRR *
Looks like I need to make this thing show more fields.
Analysis of Functions
adHandler.js forwards calls to different ad networks. At the time of writing, we have implementations for Ad Colony, AdMob, Applovin, Chartboost, Heyzap, InMobi, IronSource, Unity and Vungle. Here are a list of functionsin the ad networks, which function in ad Handler calls them, a list of which ad networks implement them, and some details of what the functions seem to do.
requestConnection() ← connect()
all ad networks except AdMob.
I think it is only called when you click on the ‘plug’ icon for an ad network that doesn’t have a proper ok_status (as mentioned a few paragraphs ago).
“/adnetwork/connect/:id” -> adnetworkController.checkConnection() -> adHandler.connect()
Parameter: adNetwork
– contains the data from the database for the given ad network.
Returns: a request-promise for a URL to GET.
Also related: errors go to a function called adHandler.parseErrors.
requestData() ← request()
all ad networks.
queueHandler.dailyRequestData() -> adHandler.request() -> requestData()
requestController.testRequest() -> adHandler.request() -> requestData()
Something sketchy in the queueHandler where it makes the call differently for Heyzap than it does for a specific list of other ad networks.
Parameters:
– opt { startDate, endDate, key, user, token, accountId }
– gameIDs # only used by Heyzap
Returns: a request-promise to download the URL that provides the data.
Related: normalizeData() is called immediately afterwards.
normalizeData() ← normalize()
all ad networks.
Parameters:
– rawResponse (from getData(), likely as an object read from a JSON reply)
– adNetwork (from DB)
Returns:
Appears to return a filtered list of dictionaries like so (but see actual examples of input and output below):
{
source_id:
this is some sort of ID returned from the ad network and found in the placements table as ‘origin_id’. Examples include “3401159” (Heyzap), “app99401999c9c04f01a1” (AdColony), “ca-app-pub-7083314419917416:9970831390” (AdMob),
company: adNetwork.name
adNetwork_id: adNetwork._id
name: the name of the game
ad_id: ‘UnityAds’, ‘IronSrc’, etc.
ad_type: ? some networks provide a value, others a blank
date: the day we are reporting stats for
plataform [sic]: ? ‘android’
country: a country code for the result
revenue: the revenue amount
impressions: number of impressions
clicks: number of clicks
split_by: ‘country’
}
What does queueHandler.dailyRequestData() do?
– it logs that it is “processing job {id}: revenue by country of {date} to {date} new”.
– it calls adHandler.request() followed by adHandler.normalize()
– if there is any data, it logs how many records it is saving
– it looks up the ‘unassigned’ bundle id and a ‘system’ user
– it finds ad ‘Placements’ (from the DB) using the ‘source_id’ returned by normalizing the data
– for any entry where no placement could be found, it created a list of missing placements. These will be added as new placements assigned to the ‘unassigned’ game.
– it finds the id for each game
– finally, it makes or updates a record for the AdRevenue
The ultimate effect seems to be:
– get the current data for this date range
– update our data, noting any games that have placements that are unknown
I’m not at all sure what I’m supposed to do given that I don’t have a country breakdown. Looking over the country table, I’m going to return “–” for unknown.
How do we test this?
I’m convinced that requestController.testRequest() exists for this purpose. You can access it via the URL “/request-test”
Here’s what I’ve got:
In requestController.js,
exports.testRequest = async (req,res)=>{
const adNetwork = await Adnetwork.findOne({adnetwork: "Chocolate"});
let response = await adHandler.request(adNetwork, '2019-02-27', '2019-02-27')
///response = adHandler.normalizeDataByCountry(response, adNetwork);
res.json(response);
};
and I needed to add the routes in adHandler.js, to the request and normalize methods (not shown).
Also, very useful to know, if you use the console.log() function in the code, it logs, well, to the console/terminal window you are running the application in.
Woohoo! I finally got something!
How to stop jobs from kicking off: comment out the cron.js file. (Just don’t check it in that way!)
Actual Examples of Input -> Output
To do this, I changed the code in requestController.testRequest to look like:
exports.testRequest = async (req,res)=>{
//const adNetwork = await Adnetwork.findOne({adnetwork: "Chartboost"});
const adNetwork = await Adnetwork.findOne({_id:'59f0c8397f5419536c7eb5c5'});
console.log(adNetwork);
console.log('')
let response = await adHandler.request(adNetwork, '2019-02-27', '2019-02-27');
console.log("Got data");
let input = response;
response = adHandler.normalize(response, adNetwork);
console.log("normalized data");
let output = response;
res.json({input, output});
};
Chartboost:
{"input":[{"dt":"2019-02-27","appId":"5824ab0843150f1290a95574","app":"The Survival Hunter Games 2","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":80,"clicksDelivered":6,"installsDelivered":0,"videoCompletedDelivered":68,"moneyEarned":0,"ctrDelivered":0.07500000298023224,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"584a921543150f42499dc773","app":"Cube of Duty: Battlefield","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":29,"clicksDelivered":3,"installsDelivered":0,"videoCompletedDelivered":28,"moneyEarned":0,"ctrDelivered":0.1034482792019844,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"586e4ca7f6cd451264bd65b5","app":"Block Wars Survival Games","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":13,"clicksDelivered":3,"installsDelivered":0,"videoCompletedDelivered":12,"moneyEarned":0,"ctrDelivered":0.23076923191547394,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"587787e104b0162f5c2997b8","app":"Most Wanted Craft Attack","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":7,"clicksDelivered":0,"installsDelivered":0,"videoCompletedDelivered":6,"moneyEarned":0,"ctrDelivered":0,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"5889f1cf43150f3e9caf2745","app":"The Survival Hungry Games 2","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":12,"clicksDelivered":0,"installsDelivered":0,"videoCompletedDelivered":9,"moneyEarned":0,"ctrDelivered":0,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"59278e2df6cd45340df56dd0","app":"Mutant Block Zombie Attack","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":14,"clicksDelivered":2,"installsDelivered":0,"videoCompletedDelivered":10,"moneyEarned":0.011016299948096275,"ctrDelivered":0.1428571492433548,"installRateDelivered":0,"ecpmEarned":0.7868785858154297,"cpcvEarned":0.0011016300413757563},{"dt":"2019-02-27","appId":"577189eef6cd452014e1f8ba","app":"Cube Wars Battlefield Survival","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":195,"clicksDelivered":29,"installsDelivered":1,"videoCompletedDelivered":161,"moneyEarned":0.706089973449707,"ctrDelivered":0.1487179547548294,"installRateDelivered":0.03448275849223137,"ecpmEarned":3.62097430229187,"cpcvEarned":0.00016204782878048718},{"dt":"2019-02-27","appId":"583448f704b01601da1c81d0","app":"Block League Heroes United","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":4,"clicksDelivered":2,"installsDelivered":0,"videoCompletedDelivered":4,"moneyEarned":0,"ctrDelivered":0.5,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"585219d9f6cd452b39edeecf","app":"Diverse Block Survival Game","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":27,"clicksDelivered":6,"installsDelivered":0,"videoCompletedDelivered":26,"moneyEarned":0,"ctrDelivered":0.2222222238779068,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"5852d484f6cd450dec19ad2d","app":"American Block Sniper Survival","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":28,"clicksDelivered":4,"installsDelivered":0,"videoCompletedDelivered":22,"moneyEarned":0,"ctrDelivered":0.1428571492433548,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"5893954cf6cd457883e5e43e","app":"Block Hunter Survival Games","campaignType":"network","adType":"rewarded_video","platform":"Google Play","countryCode":"US","adLocation":"overall","impressionsDelivered":2,"clicksDelivered":0,"installsDelivered":0,"videoCompletedDelivered":0,"moneyEarned":0,"ctrDelivered":0,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"591b36d043150f505dcf4922","app":"The Survival Hunter Games iOS","campaignType":"network","adType":"video_interstitial","platform":"iOS","countryCode":"AU","adLocation":"overall","impressionsDelivered":1,"clicksDelivered":0,"installsDelivered":0,"videoCompletedDelivered":0,"moneyEarned":0,"ctrDelivered":0,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"591b36d043150f505dcf4922","app":"The Survival Hunter Games iOS","campaignType":"network","adType":"video_interstitial","platform":"iOS","countryCode":"IQ","adLocation":"overall","impressionsDelivered":1,"clicksDelivered":0,"installsDelivered":0,"videoCompletedDelivered":0,"moneyEarned":0,"ctrDelivered":0,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"591b36d043150f505dcf4922","app":"The Survival Hunter Games iOS","campaignType":"network","adType":"rewarded_video","platform":"iOS","countryCode":"US","adLocation":"overall","impressionsDelivered":2,"clicksDelivered":1,"installsDelivered":0,"videoCompletedDelivered":1,"moneyEarned":0.015501799993216991,"ctrDelivered":0.5,"installRateDelivered":0,"ecpmEarned":7.750899791717529,"cpcvEarned":0.015501799993216991},{"dt":"2019-02-27","appId":"591b36d043150f505dcf4922","app":"The Survival Hunter Games iOS","campaignType":"network","adType":"video_interstitial","platform":"iOS","countryCode":"ES","adLocation":"overall","impressionsDelivered":1,"clicksDelivered":0,"installsDelivered":0,"videoCompletedDelivered":1,"moneyEarned":0.0027503198944032192,"ctrDelivered":0,"installRateDelivered":0,"ecpmEarned":2.7503199577331543,"cpcvEarned":0.0027503198944032192},{"dt":"2019-02-27","appId":"5ba179a8e5a1ee58ca0fa7d8","app":"Hero Storm","campaignType":"network","adType":"rewarded_video","platform":"iOS","countryCode":"CA","adLocation":"overall","impressionsDelivered":1,"clicksDelivered":0,"installsDelivered":0,"videoCompletedDelivered":1,"moneyEarned":0,"ctrDelivered":0,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0},{"dt":"2019-02-27","appId":"5ba179a8e5a1ee58ca0fa7d8","app":"Hero Storm","campaignType":"network","adType":"rewarded_video","platform":"iOS","countryCode":"US","adLocation":"overall","impressionsDelivered":8,"clicksDelivered":1,"installsDelivered":0,"videoCompletedDelivered":8,"moneyEarned":0,"ctrDelivered":0.125,"installRateDelivered":0,"ecpmEarned":0,"cpcvEarned":0}],"output":[{"source_id":"5824ab0843150f1290a95574","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"The Survival Hunter Games 2","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":80,"clicks":6,"split_by":"country"},{"source_id":"584a921543150f42499dc773","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Cube of Duty: Battlefield","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":29,"clicks":3,"split_by":"country"},{"source_id":"586e4ca7f6cd451264bd65b5","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Block Wars Survival Games","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":13,"clicks":3,"split_by":"country"},{"source_id":"587787e104b0162f5c2997b8","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Most Wanted Craft Attack","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":7,"clicks":0,"split_by":"country"},{"source_id":"5889f1cf43150f3e9caf2745","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"The Survival Hungry Games 2","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":12,"clicks":0,"split_by":"country"},{"source_id":"59278e2df6cd45340df56dd0","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Mutant Block Zombie Attack","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0.011016299948096275,"impressions":14,"clicks":2,"split_by":"country"},{"source_id":"577189eef6cd452014e1f8ba","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Cube Wars Battlefield Survival","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0.706089973449707,"impressions":195,"clicks":29,"split_by":"country"},{"source_id":"583448f704b01601da1c81d0","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Block League Heroes United","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":4,"clicks":2,"split_by":"country"},{"source_id":"585219d9f6cd452b39edeecf","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Diverse Block Survival Game","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":27,"clicks":6,"split_by":"country"},{"source_id":"5852d484f6cd450dec19ad2d","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"American Block Sniper Survival","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":28,"clicks":4,"split_by":"country"},{"source_id":"5893954cf6cd457883e5e43e","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Block Hunter Survival Games","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":2,"clicks":0,"split_by":"country"},{"source_id":"591b36d043150f505dcf4922","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"The Survival Hunter Games iOS","ad_id":"Chartboost","ad_type":"video_interstitial","date":"2019-02-27","plataform":"iOS","country":"AU","revenue":0,"impressions":1,"clicks":0,"split_by":"country"},{"source_id":"591b36d043150f505dcf4922","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"The Survival Hunter Games iOS","ad_id":"Chartboost","ad_type":"video_interstitial","date":"2019-02-27","plataform":"iOS","country":"IQ","revenue":0,"impressions":1,"clicks":0,"split_by":"country"},{"source_id":"591b36d043150f505dcf4922","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"The Survival Hunter Games iOS","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"iOS","country":"US","revenue":0.015501799993216991,"impressions":2,"clicks":1,"split_by":"country"},{"source_id":"591b36d043150f505dcf4922","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"The Survival Hunter Games iOS","ad_id":"Chartboost","ad_type":"video_interstitial","date":"2019-02-27","plataform":"iOS","country":"ES","revenue":0.0027503198944032192,"impressions":1,"clicks":0,"split_by":"country"},{"source_id":"5ba179a8e5a1ee58ca0fa7d8","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Hero Storm","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"iOS","country":"CA","revenue":0,"impressions":1,"clicks":0,"split_by":"country"},{"source_id":"5ba179a8e5a1ee58ca0fa7d8","company":"Chartboost - GameCompany A","adNetwork_id":"59f25439f77ade5c4c59d7bf","name":"Hero Storm","ad_id":"Chartboost","ad_type":"rewarded_video","date":"2019-02-27","plataform":"iOS","country":"US","revenue":0,"impressions":8,"clicks":1,"split_by":"country"}]}
Applovin – Game Co B:
{"input":{"code":200,"results":[{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"block league heroes united","package_name":"com.freegamesstudio.blockleagueheroesunited","ad_type":"VIDEO","country":"us"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break 2","package_name":"com.freegamesstudio.copsvsrobbersjailbreak2","ad_type":"REWARD","country":"ca"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"1.23","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"VIDEO","country":"us"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"cube prison: the escape","package_name":"com.freegamesstudio.cubeprisontheescape","ad_type":"VIDEO","country":"ca"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"battle craft: mine field 3d","package_name":"com.freegamesstudio.battlecraftminefield3d","ad_type":"REWARD","country":"ir"},{"day":"2019-02-27","impressions":"6","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"REWARD","country":"mx"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"block league heroes united","package_name":"com.freegamesstudio.blockleagueheroesunited","ad_type":"REWARD","country":"au"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break 2","package_name":"com.freegamesstudio.copsvsrobbersjailbreak2","ad_type":"REWARD","country":"ua"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"battle craft: mine field 3d","package_name":"com.freegamesstudio.battlecraftminefield3d","ad_type":"REWARD","country":"my"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"VIDEO","country":"ru"},{"day":"2019-02-27","impressions":"3","clicks":"1","revenue":"0","ecpm":"0.04","platform":"android","application":"Skyblock Island","package_name":"com.freegamesstudio.skyblockislandsurvivalgames","ad_type":"REWARD","country":"ru"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"REWARD","country":"ro"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"battle craft: mine field 3d","package_name":"com.freegamesstudio.battlecraftminefield3d","ad_type":"VIDEO","country":"ir"},{"day":"2019-02-27","impressions":"7","clicks":"5","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break 2","package_name":"com.freegamesstudio.copsvsrobbersjailbreak2","ad_type":"REWARD","country":"gb"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"Skyblock Island","package_name":"com.freegamesstudio.skyblockislandsurvivalgames","ad_type":"VIDEO","country":"in"},{"day":"2019-02-27","impressions":"3","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break 2","package_name":"com.freegamesstudio.copsvsrobbersjailbreak2","ad_type":"REWARD","country":"nl"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"Skyblock Island","package_name":"com.freegamesstudio.skyblockislandsurvivalgames","ad_type":"VIDEO","country":"au"},{"day":"2019-02-27","impressions":"4","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"battle craft: mine field 3d","package_name":"com.freegamesstudio.battlecraftminefield3d","ad_type":"REWARD","country":"al"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"Skyblock Island","package_name":"com.freegamesstudio.skyblockislandsurvivalgames","ad_type":"VIDEO","country":"ru"},{"day":"2019-02-27","impressions":"6","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break 2","package_name":"com.freegamesstudio.copsvsrobbersjailbreak2","ad_type":"REWARD","country":"ve"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"VIDEO","country":"sa"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"Skyblock Island","package_name":"com.freegamesstudio.skyblockislandsurvivalgames","ad_type":"REWARD","country":"fr"},{"day":"2019-02-27","impressions":"2","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break 2","package_name":"com.freegamesstudio.copsvsrobbersjailbreak2","ad_type":"REWARD","country":"pe"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"REWARD","country":"ru"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"REWARD","country":"tr"},{"day":"2019-02-27","impressions":"2","clicks":"2","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"REWARD","country":"us"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"mine gun 3d - cube fps","package_name":"com.iactivebooks.minegun","ad_type":"VIDEO","country":"kr"},{"day":"2019-02-27","impressions":"6","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"REWARD","country":"ir"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"metal cube guns: battle gear","package_name":"com.freegamesstudio.metalcubegunsbattlegear","ad_type":"VIDEO","country":"us"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"VIDEO","country":"id"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"VIDEO","country":"it"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"VIDEO","country":"jo"},{"day":"2019-02-27","impressions":"1","clicks":"1","revenue":"0","ecpm":"0","platform":"android","application":"transforming survival games 2","package_name":"com.freegamesstudio.transformingsurvivalgames2","ad_type":"REWARD","country":"tr"},{"day":"2019-02-27","impressions":"2","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break","package_name":"com.freegamesstudio.copsvsrobbersjailbreak","ad_type":"REWARD","country":"id"},{"day":"2019-02-27","impressions":"16","clicks":"2","revenue":"0.01","ecpm":"0.34","platform":"android","application":"cops vs robbers: jail break 2","package_name":"com.freegamesstudio.copsvsrobbersjailbreak2","ad_type":"REWARD","country":"us"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"cops vs robbers: jail break 2","package_name":"com.freegamesstudio.copsvsrobbersjailbreak2","ad_type":"REWARD","country":"br"},{"day":"2019-02-27","impressions":"1","clicks":"0","revenue":"0","ecpm":"0","platform":"android","application":"battle craft: mine field 3d","package_name":"com.freegamesstudio.battlecraftminefield3d","ad_type":"REWARD","country":"mx"}],"count":37},"output":[{"source_id":"com.freegamesstudio.blockleagueheroesunited","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"block league heroes united","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"US","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"CA","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"US","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.cubeprisontheescape","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cube prison: the escape","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"CA","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.battlecraftminefield3d","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"battle craft: mine field 3d","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"IR","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"MX","revenue":"0","impressions":"6","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.blockleagueheroesunited","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"block league heroes united","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"AU","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"UA","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.battlecraftminefield3d","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"battle craft: mine field 3d","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"MY","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"RU","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.skyblockislandsurvivalgames","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"Skyblock Island","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"RU","revenue":"0","impressions":"3","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"RO","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.battlecraftminefield3d","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"battle craft: mine field 3d","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"IR","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"GB","revenue":"0","impressions":"7","clicks":"5","split_by":"country"},{"source_id":"com.freegamesstudio.skyblockislandsurvivalgames","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"Skyblock Island","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"IN","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"NL","revenue":"0","impressions":"3","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.skyblockislandsurvivalgames","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"Skyblock Island","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"AU","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.battlecraftminefield3d","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"battle craft: mine field 3d","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"AL","revenue":"0","impressions":"4","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.skyblockislandsurvivalgames","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"Skyblock Island","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"RU","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"VE","revenue":"0","impressions":"6","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"SA","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.skyblockislandsurvivalgames","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"Skyblock Island","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"FR","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"PE","revenue":"0","impressions":"2","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"RU","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"TR","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"US","revenue":"0","impressions":"2","clicks":"2","split_by":"country"},{"source_id":"com.iactivebooks.minegun","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"mine gun 3d - cube fps","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"KR","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"IR","revenue":"0","impressions":"6","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.metalcubegunsbattlegear","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"metal cube guns: battle gear","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"US","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"ID","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"IT","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"VIDEO","date":"2019-02-27","plataform":"android","country":"JO","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.transformingsurvivalgames2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"transforming survival games 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"TR","revenue":"0","impressions":"1","clicks":"1","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"ID","revenue":"0","impressions":"2","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"US","revenue":"0.01","impressions":"16","clicks":"2","split_by":"country"},{"source_id":"com.freegamesstudio.copsvsrobbersjailbreak2","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"cops vs robbers: jail break 2","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"BR","revenue":"0","impressions":"1","clicks":"0","split_by":"country"},{"source_id":"com.freegamesstudio.battlecraftminefield3d","company":"Applovin - GameCompany B","adNetwork_id":"59f25516f77ade5c4c59d7c4","name":"battle craft: mine field 3d","ad_id":"Applovin","ad_type":"REWARD","date":"2019-02-27","plataform":"android","country":"MX","revenue":"0","impressions":"1","clicks":"0","split_by":"country"}]}
IronSource GameCompany A:
{"input":[{"appId":"604a57c5","date":"2019-02-27","adUnits":"Interstitial","appName":"Block Wars Survival Games (Android)","providerName":"AppLovin","data":[{"revenue":0,"eCPM":0,"availabilityRate":100,"adSourceChecks":1,"adSourceResponses":1,"impressions":0,"activeUsers":0,"engagedUsers":0,"engagementRate":0,"impressionsPerEngagedUser":0,"revenuePerActiveUser":0,"revenuePerEngagedUser":0,"engagedSessions":1,"impressionPerEngagedSessions":0,"impressionsPerSession":0,"sessionsPerActiveUser":0,"clicks":0,"clickThroughRate":0,"countryCode":"GB"}]},{"appId":"604a57c5","date":"2019-02-27","adUnits":"Rewarded Video","appName":"Block Wars Survival Games (Android)","providerName":"AppLovin","data":[{"revenue":0,"eCPM":0,"availabilityRate":100,"adSourceChecks":1,"adSourceResponses":1,"impressions":1,"videoCompletions":1,"averageRevenue":0,"useRate":50,"activeUsers":2,"engagedUsers":1,"engagementRate":50,"impressionsPerEngagedUser":1,"revenuePerActiveUser":0,"revenuePerEngagedUser":0,"engagedSessions":1,"impressionPerEngagedSessions":1,"impressionsPerSession":0.5,"sessionsPerActiveUser":1,"clicks":0,"clickThroughRate":0,"countryCode":"GB"}]},{"appId":"604a57c5","date":"2019-02-27","adUnits":"Interstitial","appName":"Block Wars Survival Games (Android)","providerName":"AdMob","data":[{"revenue":0,"eCPM":0,"availabilityRate":0,"adSourceChecks":1,"adSourceResponses":0,"impressions":0,"activeUsers":0,"engagedUsers":0,"engagementRate":0,"impressionsPerEngagedUser":0,"revenuePerActiveUser":0,"revenuePerEngagedUser":0,"engagedSessions":1,"impressionPerEngagedSessions":0,"impressionsPerSession":0,"sessionsPerActiveUser":0,"clicks":0,"clickThroughRate":0,"countryCode":"GB"}]},{"appId":"604a57c5","date":"2019-02-27","adUnits":"Rewarded Video","appName":"Block Wars Survival Games (Android)","providerName":"AdColony","data":[{"revenue":0,"eCPM":0,"availabilityRate":100,"adSourceChecks":1,"adSourceResponses":1,"impressions":0,"videoCompletions":0,"averageRevenue":0,"useRate":0,"activeUsers":0,"engagedUsers":0,"engagementRate":0,"impressionsPerEngagedUser":0,"revenuePerActiveUser":0,"revenuePerEngagedUser":0,"engagedSessions":1,"impressionPerEngagedSessions":0,"impressionsPerSession":0,"sessionsPerActiveUser":0,"clicks":0,"clickThroughRate":0,"countryCode":"GB"}]},{"appId":"6092083d","date":"2019-02-27","adUnits":"Interstitial","appName":"Blocky Fast Fury (Android)","providerName":"AdColony","data":[{"revenue":0,"eCPM":0,"availabilityRate":100,"adSourceChecks":1,"adSourceResponses":1,"impressions":0,"activeUsers":0,"engagedUsers":0,"engagementRate":0,"impressionsPerEngagedUser":0,"revenuePerActiveUser":0,"revenuePerEngagedUser":0,"engagedSessions":0,"impressionPerEngagedSessions":0,"impressionsPerSession":0,"sessionsPerActiveUser":0,"clicks":0,"clickThroughRate":0,"countryCode":"US"}]},{"appId":"6092083d","date":"2019-02-27","adUnits":"Interstitial","appName":"Blocky Fast Fury (Android)","providerName":"ironSource","data":[]},{"appId":"6092083d","date":"2019-02-27","adUnits":"Interstitial","appName":"Blocky Fast Fury (Android)","providerName":"UnityAds","data":[{"revenue":0,"eCPM":0,"availabilityRate":100,"adSourceChecks":1,"adSourceResponses":1,"impressions":0,"activeUsers":0,"engagedUsers":0,"engagementRate":0,"impressionsPerEngagedUser":0,"revenuePerActiveUser":0,"revenuePerEngagedUser":0,"engagedSessions":0,"impressionPerEngagedSessions":0,"impressionsPerSession":0,"sessionsPerActiveUser":0,"clicks":0,"clickThroughRate":0,"countryCode":"OM"}]},{"appId":"604a57c5","date":"2019-02-27","adUnits":"Interstitial","appName":"Block Wars Survival Games (Android)","providerName":"AdColony","data":[{"revenue":0,"eCPM":0,"availabilityRate":100,"adSourceChecks":1,"adSourceResponses":1,"impressions":0,"activeUsers":0,"engagedUsers":0,"engagementRate":0,"impressionsPerEngagedUser":0,"revenuePerActiveUser":0,"revenuePerEngagedUser":0,"engagedSessions":1,"impressionPerEngagedSessions":0,"impressionsPerSession":0,"sessionsPerActiveUser":0,"clicks":0,"clickThroughRate":0,"countryCode":"GB"}]},{"appId":"604a57c5","date":"2019-02-27","adUnits":"Interstitial","appName":"Block Wars Survival Games (Android)","providerName":"ironSource","data":[]}],"output":[]}
The IronSource transformation code filters out everything that doesn’t come from the IronSource network, and everything with no data. In this instance, it came back with an empty result.
Unity – Crystal Buffalo Game Studio Inc:
{"input":"Date,Source game id,Source game name,Country code,Country tier,adrequests,available,offers,started,views,revenue\n\"2019-02-27 00:00:00\",101804,\"Blocklands Survival Games\",\"CN\",5,1,0,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",101804,\"Blocklands Survival Games\",\"ES\",5,40,40,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",101804,\"Blocklands Survival Games\",\"RU\",5,2,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",131627384,\"Cops Vs Robbers Survival Gun 3D\",\"CY\",5,4,3,0,2,2,\"0.00\"\n\"2019-02-27 00:00:00\",131627384,\"Cops Vs Robbers Survival Gun 3D\",\"FR\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",131627384,\"Cops Vs Robbers Survival Gun 3D\",\"GT\",5,1,0,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",131627384,\"Cops Vs Robbers Survival Gun 3D\",\"RU\",5,2,2,0,1,1,\"0.00\"\n\"2019-02-27 00:00:00\",131627384,\"Cops Vs Robbers Survival Gun 3D\",\"US\",5,1,1,0,1,1,\"0.00\"\n\"2019-02-27 00:00:00\",131627384,\"Cops Vs Robbers Survival Gun 3D\",\"VN\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",29803,\"Block Mortal Survival Battle\",\"US\",5,2,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31019,\"Cube Soldiers: Crisis Survival\",\"AM\",5,4,0,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31019,\"Cube Soldiers: Crisis Survival\",\"CN\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31019,\"Cube Soldiers: Crisis Survival\",\"IQ\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31019,\"Cube Soldiers: Crisis Survival\",\"TH\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31343,\"Hide And Seek: War Games\",\"EG\",5,2,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31343,\"Hide And Seek: War Games\",\"ES\",5,3,3,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31343,\"Hide And Seek: War Games\",\"GT\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31343,\"Hide And Seek: War Games\",\"MX\",5,0,0,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31343,\"Hide And Seek: War Games\",\"TR\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31912,\"Cube of Duty: Ghost Blocks\",\"CN\",5,72,16,0,3,2,\"0.00\"\n\"2019-02-27 00:00:00\",31912,\"Cube of Duty: Ghost Blocks\",\"TH\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31912,\"Cube of Duty: Ghost Blocks\",\"UA\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",31912,\"Cube of Duty: Ghost Blocks\",\"US\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",32155,\"Cops VS Robbers Prison Escape\",\"FR\",5,11,11,0,4,3,\"0.00\"\n\"2019-02-27 00:00:00\",32155,\"Cops VS Robbers Prison Escape\",\"ID\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",32155,\"Cops VS Robbers Prison Escape\",\"IN\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",32155,\"Cops VS Robbers Prison Escape\",\"JP\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",32155,\"Cops VS Robbers Prison Escape\",\"TR\",5,1,1,0,1,0,\"0.00\"\n\"2019-02-27 00:00:00\",54449,\"Ghost Division Cube FPS\",\"DE\",5,42,42,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",56054,\"Clan Outlaw: Gun Craft 3D\",\"BO\",5,1,0,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",56054,\"Clan Outlaw: Gun Craft 3D\",\"JP\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",56054,\"Clan Outlaw: Gun Craft 3D\",\"KR\",5,40,40,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",56054,\"Clan Outlaw: Gun Craft 3D\",\"PH\",5,2,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",56054,\"Clan Outlaw: Gun Craft 3D\",\"SA\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",63538,\"Dead Cubes Monster Encounter\",\"AR\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",63538,\"Dead Cubes Monster Encounter\",\"ES\",5,44,44,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",63538,\"Dead Cubes Monster Encounter\",\"JP\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",63538,\"Dead Cubes Monster Encounter\",\"KR\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",64483,\"Robot Ninja Battle Royale\",\"EG\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",64483,\"Robot Ninja Battle Royale\",\"ES\",5,43,43,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",64483,\"Robot Ninja Battle Royale\",\"GB\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",64483,\"Robot Ninja Battle Royale\",\"MY\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",64483,\"Robot Ninja Battle Royale\",\"SA\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",64483,\"Robot Ninja Battle Royale\",\"TR\",5,2,1,0,1,1,\"0.00\"\n\"2019-02-27 00:00:00\",64483,\"Robot Ninja Battle Royale\",\"US\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",68098,\"Block City Clan Wars\",\"BR\",5,40,36,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",68098,\"Block City Clan Wars\",\"JP\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"BR\",5,3,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"CA\",5,6,6,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"DE\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"ES\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"FR\",5,3,3,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"IN\",5,5,0,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"JP\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"KR\",5,4,4,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"RU\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"TH\",5,5,4,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",82234,\"Rise of the Block Raider 3D\",\"TW\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"BR\",5,6,6,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"CA\",5,2,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"DE\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"ES\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"FR\",5,7,7,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"IN\",5,4,3,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"KR\",5,2,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"RU\",5,4,4,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"TH\",5,4,4,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",85174,\"[DELETE ME] Star Force Battlefront Wars\",\"TW\",5,3,3,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",88720,\"Rescue Robots Block Heroes\",\"IN\",5,40,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",88720,\"Rescue Robots Block Heroes\",\"MX\",5,1,0,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"BR\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"CA\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"DE\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"ES\",5,3,3,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"FR\",5,2,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"IN\",5,7,6,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"JP\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"KR\",5,4,4,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"RU\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"TH\",5,6,6,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",91367,\"Underground Skull Tales FPS\",\"TW\",5,7,7,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",92053,\"Alien Attack on Block Street\",\"FR\",5,44,43,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",92379,\"Dead Blocks Operation Survival\",\"CZ\",5,3,3,0,1,0,\"0.00\"\n\"2019-02-27 00:00:00\",92379,\"Dead Blocks Operation Survival\",\"JP\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",92379,\"Dead Blocks Operation Survival\",\"KR\",5,36,36,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",92509,\"Spectre: Dawn of Block Justice\",\"RU\",5,40,40,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"BR\",5,6,6,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"CA\",5,1,1,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"DE\",5,4,4,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"FR\",5,7,7,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"IN\",5,4,2,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"KR\",5,5,5,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"RU\",5,8,8,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"TH\",5,3,3,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",93580,\"Ghost Blocks: First Assault\",\"TW\",5,3,3,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",97740,\"Cops Vs Robbers Survival Gun 3D\",\"BR\",5,43,36,0,0,0,\"0.00\"\n\"2019-02-27 00:00:00\",97740,\"Cops Vs Robbers Survival Gun 3D\",\"JP\",5,1,1,0,0,0,\"0.00\"","output":[{"source_id":"131627384","company":"Unity - Crystal Buffalo Game Studio Inc","adNetwork_id":"59f0c8397f5419536c7eb5c5","name":"Cops Vs Robbers Survival Gun 3D","ad_id":"UnityAds","ad_type":"","date":"2019-02-27","plataform":"android","country":"CY","revenue":0,"impressions":2,"clicks":0,"split_by":"country"},{"source_id":"131627384","company":"Unity - Crystal Buffalo Game Studio Inc","adNetwork_id":"59f0c8397f5419536c7eb5c5","name":"Cops Vs Robbers Survival Gun 3D","ad_id":"UnityAds","ad_type":"","date":"2019-02-27","plataform":"android","country":"RU","revenue":0,"impressions":1,"clicks":0,"split_by":"country"},{"source_id":"131627384","company":"Unity - Crystal Buffalo Game Studio Inc","adNetwork_id":"59f0c8397f5419536c7eb5c5","name":"Cops Vs Robbers Survival Gun 3D","ad_id":"UnityAds","ad_type":"","date":"2019-02-27","plataform":"android","country":"US","revenue":0,"impressions":1,"clicks":0,"split_by":"country"},{"source_id":"31912","company":"Unity - Crystal Buffalo Game Studio Inc","adNetwork_id":"59f0c8397f5419536c7eb5c5","name":"Cube of Duty: Ghost Blocks","ad_id":"UnityAds","ad_type":"","date":"2019-02-27","plataform":"android","country":"CN","revenue":0,"impressions":3,"clicks":0,"split_by":"country"},{"source_id":"32155","company":"Unity - Crystal Buffalo Game Studio Inc","adNetwork_id":"59f0c8397f5419536c7eb5c5","name":"Cops VS Robbers Prison Escape","ad_id":"UnityAds","ad_type":"","date":"2019-02-27","plataform":"android","country":"FR","revenue":0,"impressions":4,"clicks":0,"split_by":"country"},{"source_id":"32155","company":"Unity - Crystal Buffalo Game Studio Inc","adNetwork_id":"59f0c8397f5419536c7eb5c5","name":"Cops VS Robbers Prison Escape","ad_id":"UnityAds","ad_type":"","date":"2019-02-27","plataform":"android","country":"TR","revenue":0,"impressions":1,"clicks":0,"split_by":"country"},{"source_id":"64483","company":"Unity - Crystal Buffalo Game Studio Inc","adNetwork_id":"59f0c8397f5419536c7eb5c5","name":"Robot Ninja Battle Royale","ad_id":"UnityAds","ad_type":"","date":"2019-02-27","plataform":"android","country":"TR","revenue":0,"impressions":1,"clicks":0,"split_by":"country"},{"source_id":"92379","company":"Unity - Crystal Buffalo Game Studio Inc","adNetwork_id":"59f0c8397f5419536c7eb5c5","name":"Dead Blocks Operation Survival","ad_id":"UnityAds","ad_type":"","date":"2019-02-27","plataform":"android","country":"CZ","revenue":0,"impressions":1,"clicks":0,"split_by":"country"}]}
The Unity input is different — it appears to be a csv file. Note also that the first three rows of data were filtered out because revenue and impressions were 0.
Back to the functions to implement:
getPlacements() ← getPlacements()
all ad networks.
parameter: adNetwork (the model, with all the data).
returns: a promise to a specific URL.
normalizePlacements() ← normalizePlacements()
all ad networks.
parameter: adNetwork (the ad network model), user (presumably a user in the Herby system), rawPlacements (most likely the data returned from making the request returned by getPlacements).
Let’s see what we actually get back from getPlacements and normalizePlacements.
Taking bits and pieces of code from adnetworkController.getPlacements, and putting it in to requestController.testRequest, I end up with:
Unity
{"input":"Date,Source game id,Source game name,adrequests,available,offers,started,views,revenue\n\"alltime\",101804,\"Blocklands Survival Games\",2006,1887,0,32,17,\"0.00\"\n\"alltime\",131627384,\"Cops Vs Robbers Survival Gun 3D\",4082,3674,0,1503,1336,\"0.43\"\n\"alltime\",27163,\"Battle Ground Survival Games\",455,428,0,262,242,\"0.00\"\n\"alltime\",29803,\"Block Mortal Survival Battle\",2026,1648,0,634,550,\"0.04\"\n\"alltime\",31019,\"Cube Soldiers: Crisis Survival\",3467,3324,0,1158,776,\"0.59\"\n\"alltime\",31343,\"Hide And Seek: War Games\",2565,2231,0,501,444,\"0.03\"\n\"alltime\",31912,\"Cube of Duty: Ghost Blocks\",15379,7276,0,1345,1030,\"0.15\"\n\"alltime\",32155,\"Cops VS Robbers Prison Escape\",995,949,0,152,126,\"0.53\"\n\"alltime\",32851,\"Clash of Wars Cube Mini Game\",12,9,0,5,5,\"0.00\"\n\"alltime\",48927,\"Battle Block Strike Force\",3,2,0,2,1,\"0.00\"\n\"alltime\",54449,\"Ghost Division Cube FPS\",1837,1787,0,1,1,\"0.00\"\n\"alltime\",56054,\"Clan Outlaw: Gun Craft 3D\",2671,2438,0,230,204,\"0.01\"\n\"alltime\",63538,\"Dead Cubes Monster Encounter\",2447,2391,0,56,46,\"0.52\"\n\"alltime\",64483,\"Robot Ninja Battle Royale\",4817,4542,0,534,454,\"0.05\"\n\"alltime\",68098,\"Block City Clan Wars\",2140,1800,0,29,25,\"0.00\"\n\"alltime\",82234,\"Rise of the Block Raider 3D\",1675,1475,0,0,0,\"0.00\"\n\"alltime\",85174,\"[DELETE ME] Star Force Battlefront Wars\",1806,1692,0,0,0,\"0.00\"\n\"alltime\",88720,\"Rescue Robots Block Heroes\",3142,2337,0,492,413,\"0.31\"\n\"alltime\",91367,\"Underground Skull Tales FPS\",1727,1625,0,4,2,\"0.00\"\n\"alltime\",92053,\"Alien Attack on Block Street\",1900,1844,0,11,6,\"0.00\"\n\"alltime\",92379,\"Dead Blocks Operation Survival\",1803,1737,0,57,43,\"0.00\"\n\"alltime\",92509,\"Spectre: Dawn of Block Justice\",1834,1788,0,0,0,\"0.00\"\n\"alltime\",93580,\"Ghost Blocks: First Assault\",1782,1686,0,0,0,\"0.00\"\n\"alltime\",97740,\"Cops Vs Robbers Survival Gun 3D\",1791,1178,0,0,0,\"0.00\"","output":[{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"101804","origin_name":"Blocklands Survival Games","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"131627384","origin_name":"Cops Vs Robbers Survival Gun 3D","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"27163","origin_name":"Battle Ground Survival Games","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"29803","origin_name":"Block Mortal Survival Battle","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"31019","origin_name":"Cube Soldiers: Crisis Survival","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"31343","origin_name":"Hide And Seek: War Games","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"31912","origin_name":"Cube of Duty: Ghost Blocks","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"32155","origin_name":"Cops VS Robbers Prison Escape","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"32851","origin_name":"Clash of Wars Cube Mini Game","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"48927","origin_name":"Battle Block Strike Force","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"54449","origin_name":"Ghost Division Cube FPS","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"56054","origin_name":"Clan Outlaw: Gun Craft 3D","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"63538","origin_name":"Dead Cubes Monster Encounter","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"64483","origin_name":"Robot Ninja Battle Royale","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"68098","origin_name":"Block City Clan Wars","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"82234","origin_name":"Rise of the Block Raider 3D","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"85174","origin_name":"[DELETE ME] Star Force Battlefront Wars","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"88720","origin_name":"Rescue Robots Block Heroes","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"91367","origin_name":"Underground Skull Tales FPS","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"92053","origin_name":"Alien Attack on Block Street","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"92379","origin_name":"Dead Blocks Operation Survival","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"92509","origin_name":"Spectre: Dawn of Block Justice","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"93580","origin_name":"Ghost Blocks: First Assault","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"UnityAds","ad_network":"59f0c8397f5419536c7eb5c5","origin_id":"97740","origin_name":"Cops Vs Robbers Survival Gun 3D","linked":false,"active":true,"created":"2019-03-05T15:50:45.808Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T15:50:45.808Z","updated_by":"5af0af6603dec02c90113092"}]}
Applovin
{"input":{"code":200,"results":[{"impressions":"1","revenue":"0","platform":"android","application":"block hunter survival games","package_name":"com.topgamestudio.insurgentblocksurvivalgames"},{"impressions":"440","revenue":"0.03","platform":"android","application":"The Survival Hungry Games 2","package_name":"com.topgamestudio.thesurvivalhungrygames2"},{"impressions":"3141","revenue":"1.12","platform":"android","application":"titan attack: wall defense fps","package_name":"com.topgamestudio.titanattackwalldefensefps"},{"impressions":"8","revenue":"0","platform":"android","application":"cube of duty: battlefield","package_name":"com.topgamestudio.cubeofdutybattlefieldpk"},{"impressions":"3","revenue":"0","platform":"android","application":"Block Gun Survival Games","package_name":"com.topgamestudio.blockgunsurvivalgames"},{"impressions":"80","revenue":"0","platform":"android","application":"Block Wars Survival City","package_name":"com.topgamestudio.blockwarssurvivalcity"},{"impressions":"29","revenue":"0","platform":"android","application":"most wanted craft attack","package_name":"com.awesomegames.mostwantedcraftattack"},{"impressions":"1","revenue":"0","platform":"android","application":"royal age - survival war games","package_name":"com.topgamestudio.wildhuntersurvivalfps"},{"impressions":"239","revenue":"0.01","platform":"android","application":"block soldier war games","package_name":"com.awesomegames.blocksoldierwargames"},{"impressions":"504","revenue":"0.01","platform":"android","application":"block island survival games","package_name":"com.topgamestudio.blockislandsurvivalgames"},{"impressions":"93","revenue":"0","platform":"android","application":"cops n robbers survival game","package_name":"com.topgamestudio.copsnrobberssurvivalgame"},{"impressions":"802","revenue":"0.05","platform":"android","application":"cube wars battlefield survival","package_name":"com.topgamestudio.cubewarsbattlefieldsurvival"},{"impressions":"563","revenue":"0.04","platform":"android","application":"most wanted jail break","package_name":"com.topgamestudio.mostwantedjailbreak"},{"impressions":"13","revenue":"0","platform":"android","application":"haunted block mansion fps mod","package_name":"com.topgamestudio.hauntedblockmansion"},{"impressions":"10","revenue":"0","platform":"android","application":"american block sniper hero","package_name":"com.awesomegames.survivalgameswildlands"},{"impressions":"50","revenue":"0","platform":"android","application":"school of the dead mine game","package_name":"com.topgamestudio.schoolofthedeadminigame"},{"impressions":"1","revenue":"0","platform":"android","application":"dead walkers survival games","package_name":"com.topgamestudio.deadwalkerssurvivalgames"},{"impressions":"142","revenue":"0.2","platform":"android","application":"blocky mine beach bomb","package_name":"com.awesomegamesstudio.blockyminebeachbomb"},{"impressions":"1","revenue":"0","platform":"fireos","application":"com.topgamestudio.americanblocksnipersurvival","package_name":"com.topgamestudio.americanblocksnipersurvival"},{"impressions":"259","revenue":"0","platform":"android","application":"the survival hunter games","package_name":"com.topgamestudio.thesurvivalhuntergames"},{"impressions":"3","revenue":"0","platform":"android","application":"block soldier battlefield","package_name":"com.topgamestudio.captainsoldieramericanhero"},{"impressions":"4","revenue":"0","platform":"android","application":"Cube Gun Survival Games","package_name":"com.topgamestudio.cubegunsurvivalgames"},{"impressions":"99","revenue":"0","platform":"android","application":"cube strike: global warfare","package_name":"com.topgamestudio.cubestrikeglobalwarfare"},{"impressions":"4","revenue":"0","platform":"android","application":"survival games - district1 fps","package_name":"com.iactivebooks.survivalgames"},{"impressions":"3","revenue":"0","platform":"android","application":"Robot Forge - Craft Legends","package_name":"com.awesomegames.robotforgecraftlegends"},{"impressions":"68","revenue":"0.01","platform":"android","application":"spectre: dawn of block justice","package_name":"com.awesomegames.spectredawnofblockjustice"},{"impressions":"143","revenue":"0","platform":"android","application":"Orange Block Prison Break","package_name":"com.topgamestudio.orangeblockprisonbreak"},{"impressions":"374","revenue":"0.02","platform":"android","application":"Survival Hungry Games","package_name":"com.topgamestudio.survivalhungrygames"},{"impressions":"198","revenue":"0.01","platform":"android","application":"diverse block survival game","package_name":"com.topgamestudio.thedivergentsurvivalgames"},{"impressions":"4129","revenue":"1.62","platform":"android","application":"The Survival Hunter Games 2","package_name":"com.freegamesstudio.thesurvivalhuntergames2"},{"impressions":"4","revenue":"0","platform":"android","application":"saving xmas: santa vs grinch","package_name":"com.topgamestudio.savingxmassantavsgrinch"},{"impressions":"2","revenue":"0","platform":"fireos","application":"block island survival games","package_name":"com.topgamestudio.blockislandsurvivalgames"},{"impressions":"77","revenue":"0","platform":"android","application":"mutant block zombie attack","package_name":"com.topgamestudio.mutantblockzombieattack"},{"impressions":"4485","revenue":"0.76","platform":"android","application":"american block sniper survival","package_name":"com.topgamestudio.americanblocksnipersurvival"},{"impressions":"49","revenue":"0","platform":"android","application":"block ninja mine games","package_name":"com.topgamesstudio.assassinsblockgunsyndicate"},{"impressions":"328","revenue":"0.01","platform":"android","application":"cube of duty: battlefield","package_name":"com.topgamestudio.cubeofdutybattlefield"},{"impressions":"357","revenue":"0.82","platform":"ios","application":"the survival hunter games","package_name":"com.topgamestudio.thesurvivalhuntergames"}],"count":37},"output":[{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.insurgentblocksurvivalgames","origin_name":"block hunter survival games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.thesurvivalhungrygames2","origin_name":"The Survival Hungry Games 2","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.titanattackwalldefensefps","origin_name":"titan attack: wall defense fps","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.cubeofdutybattlefieldpk","origin_name":"cube of duty: battlefield","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.blockgunsurvivalgames","origin_name":"Block Gun Survival Games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.blockwarssurvivalcity","origin_name":"Block Wars Survival City","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.awesomegames.mostwantedcraftattack","origin_name":"most wanted craft attack","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.wildhuntersurvivalfps","origin_name":"royal age - survival war games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.awesomegames.blocksoldierwargames","origin_name":"block soldier war games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.blockislandsurvivalgames","origin_name":"block island survival games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.copsnrobberssurvivalgame","origin_name":"cops n robbers survival game","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.cubewarsbattlefieldsurvival","origin_name":"cube wars battlefield survival","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.mostwantedjailbreak","origin_name":"most wanted jail break","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.hauntedblockmansion","origin_name":"haunted block mansion fps mod","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.awesomegames.survivalgameswildlands","origin_name":"american block sniper hero","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.schoolofthedeadminigame","origin_name":"school of the dead mine game","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.deadwalkerssurvivalgames","origin_name":"dead walkers survival games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.awesomegamesstudio.blockyminebeachbomb","origin_name":"blocky mine beach bomb","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.americanblocksnipersurvival","origin_name":"com.topgamestudio.americanblocksnipersurvival","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.thesurvivalhuntergames","origin_name":"the survival hunter games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.captainsoldieramericanhero","origin_name":"block soldier battlefield","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.cubegunsurvivalgames","origin_name":"Cube Gun Survival Games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.cubestrikeglobalwarfare","origin_name":"cube strike: global warfare","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.iactivebooks.survivalgames","origin_name":"survival games - district1 fps","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.awesomegames.robotforgecraftlegends","origin_name":"Robot Forge - Craft Legends","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.awesomegames.spectredawnofblockjustice","origin_name":"spectre: dawn of block justice","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.orangeblockprisonbreak","origin_name":"Orange Block Prison Break","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.survivalhungrygames","origin_name":"Survival Hungry Games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.thedivergentsurvivalgames","origin_name":"diverse block survival game","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.freegamesstudio.thesurvivalhuntergames2","origin_name":"The Survival Hunter Games 2","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.savingxmassantavsgrinch","origin_name":"saving xmas: santa vs grinch","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.blockislandsurvivalgames","origin_name":"block island survival games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.mutantblockzombieattack","origin_name":"mutant block zombie attack","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.americanblocksnipersurvival","origin_name":"american block sniper survival","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamesstudio.assassinsblockgunsyndicate","origin_name":"block ninja mine games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.cubeofdutybattlefield","origin_name":"cube of duty: battlefield","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"Applovin","ad_network":"59f254faf77ade5c4c59d7c3","origin_id":"com.topgamestudio.thesurvivalhuntergames","origin_name":"the survival hunter games","linked":false,"active":true,"created":"2019-03-05T16:36:11.472Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:36:11.472Z","updated_by":"5af0af6603dec02c90113092"}]}
IronSource
{"input":{"status":"full","data":[{"app_id":"6bdcfa3d","application_name":"American Block Sniper Survival","platform":"google_play","bundle_id":"com.topgamestudio.americanblocksnipersurvival"},{"app_id":"6ce170f5","application_name":"American Block Sniper Survival","platform":"apple_itunes","bundle_id":"com.topgamestudio.americanblocksnipersurvival"},{"app_id":"6a9cbc35","application_name":"American Blocky Street Race","platform":"google_play","bundle_id":"com.crazycommando.americanblockystreetrace"},{"app_id":"6a9d2f45","application_name":"Block City Clan Wars","platform":"google_play","bundle_id":"com.crystalbuffalo.blockcityclanwars"},{"app_id":"6c10375d","application_name":"Block City Race Wars","platform":"google_play","bundle_id":"com.badjellyfish.blockcityracewars"},{"app_id":"6c17db6d","application_name":"Block District Crazy Race","platform":"google_play","bundle_id":"com.interpixelarts.blockdistrictcrazyrace"},{"app_id":"6943ff45","application_name":"Block Mine Beach Bomb","platform":"google_play","bundle_id":"com.awesomegamesstudio.blockyminebeachbomb"},{"app_id":"70b5b845","application_name":"Block Mortal Survival Battle","platform":"google_play","bundle_id":"com.crystalbuffalo.blockmortalsurvivalkombat1"},{"app_id":"694f755d","application_name":"Block Soldier War Games","platform":"google_play","bundle_id":"com.awesomegames.blocksoldierwargames"},{"app_id":"7743570d","application_name":"Block Survivor - Rules of Battle","platform":"google_play","bundle_id":"tempBundleId5b572303e19692.27715382"},{"app_id":"6913e795","application_name":"Block Wars Killer Sniper","platform":"google_play","bundle_id":"com.survivalgamesstudio.contractkillersoldierstory"},{"app_id":"7201df75","application_name":"Block Wars Survival Games","platform":"google_play","bundle_id":"com.topgamestudio.blockislandsurvivalgames"},{"app_id":"6c0df80d","application_name":"Block Wheels Race Game","platform":"google_play","bundle_id":"com.badjellyfish.blockwheelsracegame"},{"app_id":"6820122d","application_name":"Blocky Fast Fury","platform":"google_play","bundle_id":"com.topgamestudio.blockyfastfury"},{"app_id":"6d11c22d","application_name":"Blocky Fast Fury","platform":"apple_itunes","bundle_id":"tempBundleId5a7947dac4a8a0.42794980"},{"app_id":"6cf19f35","application_name":"Blocky Fast Fury 2","platform":"apple_itunes","bundle_id":"com.badjellyfish.blockyfastfury2"},{"app_id":"6a88f575","application_name":"Blocky Fast Fury 2","platform":"google_play","bundle_id":"com.badjellyfish.blockyfastfury2"},{"app_id":"6b8c4c85","application_name":"Blocky Race Championship","platform":"google_play","bundle_id":"com.interpixelarts.blockyracechampionship"},{"app_id":"6a8cc77d","application_name":"Blocky Rally Offroad","platform":"google_play","bundle_id":"com.badjellyfish.blockyrallyoffroad"},{"app_id":"6ae8052d","application_name":"Blocky Turbo Kart Racers","platform":"google_play","bundle_id":"com.interpixelarts.blockyturbokartracers"},{"app_id":"71aa73cd","application_name":"Cascade2.0 DummyApp","platform":"google_play","bundle_id":"tempBundleId5af33a01d86d78.64195905"},{"app_id":"6bbf501d","application_name":"City Tour Racing Karts","platform":"google_play","bundle_id":"com.badjellyfish.citytourracingkarts"},{"app_id":"6858b40d","application_name":"Clan Outlaw: Gun Craft 3D","platform":"google_play","bundle_id":"com.crystalbuffalo.clanoutlawguncraft3d"},{"app_id":"692cd98d","application_name":"Cops VS Robbers Prison Escape","platform":"google_play","bundle_id":"com.crystalbuffalo.copsrobbersprisonescape"},{"app_id":"6be464c5","application_name":"Cops Vs Robbers: Jail Break","platform":"google_play","bundle_id":"com.freegamesstudio.copsvsrobbersjailbreak"},{"app_id":"6d0d0a05","application_name":"Cops vs Robbers Blocky Pursuit","platform":"apple_itunes","bundle_id":"tempBundleId5a7879326ec5d4.35676219"},{"app_id":"6a648d65","application_name":"Cops vs Robbers Blocky Pursuit","platform":"google_play","bundle_id":"com.interpixelarts.copsvsrobbersblockypursuit"},{"app_id":"6bb0ee1d","application_name":"Cops vs Robbers Hot Chase","platform":"google_play","bundle_id":"com.interpixelarts.copsvsrobbershotchase"},{"app_id":"6889eb65","application_name":"Cops vs Robbers Hunter Games","platform":"google_play","bundle_id":"com.survivalgamesstudios.copsvsrobbershuntergames"},{"app_id":"6e766845","application_name":"Cops vs Robbers Survival Games","platform":"google_play","bundle_id":"tempBundleId5a9ec64d6fa782.13117903"},{"app_id":"6e76db55","application_name":"Cops vs Robbers Survival Games","platform":"apple_itunes","bundle_id":"tempBundleId5a9ed0a556e833.13815183"},{"app_id":"6ae6abfd","application_name":"Cube City Race Game","platform":"google_play","bundle_id":"com.interpixelarts.cubecityracegame"},{"app_id":"6ce42355","application_name":"Cube Soldiers: Crisis Survival","platform":"apple_itunes","bundle_id":"com.aeriacanada.cubesoldierscrisissurvival"},{"app_id":"6f5f3aa5","application_name":"Cube Soldiers: Crisis Survival","platform":"google_play","bundle_id":"com.crystalbuffalo.cubesoldierscrisissurvival"},{"app_id":"6ed0133d","application_name":"Cube Steel Maximum Survival","platform":"apple_itunes","bundle_id":"com.aeriacanada.CubesteelMaxsurvival"},{"app_id":"6a5b1d15","application_name":"Cube of Duty: Ghost Blocks","platform":"google_play","bundle_id":"com.freegamesstudio.cubeofdutyghostblocks"},{"app_id":"6c10aa6d","application_name":"Cubes Crash Death Race","platform":"google_play","bundle_id":"com.badjellyfish.cubescrashdeathrace"},{"app_id":"6bd675d5","application_name":"Cubes Demolition Mad Race","platform":"google_play","bundle_id":"com.interpixelarts.cubesdemolitionmadrace"},{"app_id":"6bd3fcfd","application_name":"Cubes For Speed City Race","platform":"google_play","bundle_id":"com.badjellyfish.cubesforspeedcityrace"},{"app_id":"6eb6ae35","application_name":"Diverse Block Survival Game","platform":"google_play","bundle_id":"com.topgamestudio.thedivergentsurvivalgames"},{"app_id":"6ad6f0cd","application_name":"Extreme Blocky Wheels","platform":"google_play","bundle_id":"com.crazycommando.extremeblockywheels"},{"app_id":"6e924625","application_name":"Fluffy Rainbow Rush","platform":"google_play","bundle_id":"com.aeriacanada.fluffyrainbowrush"},{"app_id":"6e92b935","application_name":"Fluffy Tap","platform":"apple_itunes","bundle_id":"tempBundleId5aa172756c7291.22017801"},{"app_id":"6e195e55","application_name":"Hero Cube Color","platform":"apple_itunes","bundle_id":"tempBundleId5a95fb62cd7895.58717813"},{"app_id":"7ad266bd","application_name":"Hero Storm - Save the World","platform":"apple_itunes","bundle_id":"com.aeriacanada.herostorm"},{"app_id":"681eb8fd","application_name":"House of Blocks FPS","platform":"google_play","bundle_id":"com.freegamesstudio.houseofblocksfps"},{"app_id":"6aa8324d","application_name":"Lucky Blocks Racing","platform":"google_play","bundle_id":"com.badjellyfish.luckyblocksracing"},{"app_id":"6a650075","application_name":"Mad Blocks N Fury","platform":"google_play","bundle_id":"com.gunchimpstudios.madblocksnfury"},{"app_id":"6a967155","application_name":"Mega Race Cube Chaos","platform":"google_play","bundle_id":"com.gunchimpstudios.megaracecubechaos"},{"app_id":"6ab454fd","application_name":"Mine Cars Championship","platform":"google_play","bundle_id":"com.interpixelarts.minecarschampionship"},{"app_id":"6ae1f3d5","application_name":"Mine Kart Turbo","platform":"google_play","bundle_id":"com.badjellyfish.minekartturbo"},{"app_id":"6a8e5a35","application_name":"Mine Karts Go!","platform":"google_play","bundle_id":"com.interpixelarts.minekartsgo"},{"app_id":"6eedbd5d","application_name":"Most Wanted Craft Attack","platform":"apple_itunes","bundle_id":"tempBundleId5aaacd71890487.04564304"},{"app_id":"68fde185","application_name":"Most Wanted Craft Attack","platform":"google_play","bundle_id":"com.awesomegames.mostwantedcraftattack"},{"app_id":"71cd4925","application_name":"Most Wanted Jail Break","platform":"google_play","bundle_id":"com.topgamestudio.mostwantedjailbreak"},{"app_id":"818925bd","application_name":"Most Wanted Jail Break","platform":"apple_itunes","bundle_id":"com.topgamestudio.mostwantedjailbreak"},{"app_id":"6e24d46d","application_name":"Mutant Block Zombie Attack","platform":"google_play","bundle_id":"com.topgamestudio.mutantblockzombieattack"},{"app_id":"6e614855","application_name":"Mutant Block Zombie Attack iOS","platform":"apple_itunes","bundle_id":"tempBundleId5a9d6b0e5a4409.21778000"},{"app_id":"6bc23c05","application_name":"Nitro Cube Racing","platform":"google_play","bundle_id":"com.gunchimpstudios.nitrocuberacing"},{"app_id":"75caea35","application_name":"Rescue Robots Survival Games","platform":"google_play","bundle_id":"com.freegamesstudio.transformingsurvivalgames"},{"app_id":"6ad477f5","application_name":"Road Block Racing","platform":"google_play","bundle_id":"com.badjellyfish.blockydrifttokyochallenge"},{"app_id":"74f8576d","application_name":"Robot Ninja Battle Royale","platform":"google_play","bundle_id":"com.crystalbuffalo.CubesteelMaxsurvival"},{"app_id":"6dcd2f3d","application_name":"Royal Age - Survival War Games","platform":"google_play","bundle_id":"com.topgamestudio.wildhuntersurvivalfps"},{"app_id":"6dcda24d","application_name":"Royal Age - Survival War Games","platform":"apple_itunes","bundle_id":"tempBundleId5a8e24fb64b8b5.64887939"},{"app_id":"6e38d4b5","application_name":"Skyblock Island Survival Game","platform":"apple_itunes","bundle_id":"com.freegamesstudio.skyblockislandsurvivalgames"},{"app_id":"69f0d0cd","application_name":"Skyblock Island Survival Games","platform":"google_play","bundle_id":"com.freegamesstudio.skyblockislandsurvivalgames"},{"app_id":"6d0e6335","application_name":"Skyblock Island Survival Games (Archived)","platform":"apple_itunes","bundle_id":"tempBundleId5a7893ee2f2736.26018816"},{"app_id":"6d5ed765","application_name":"Splashy Dummy","platform":"apple_itunes","bundle_id":"tempBundleId5a81c3937e4611.78725511"},{"app_id":"6d5ff70d","application_name":"Splashy Dummy Jump","platform":"google_play","bundle_id":"com.aeriacanada.splashydummyjump"},{"app_id":"6d990bfd","application_name":"Stack Tap Disco Star","platform":"google_play","bundle_id":"com.aeriacanada.pumpupthejams"},{"app_id":"6e27c055","application_name":"Stack Tap Disco Star","platform":"apple_itunes","bundle_id":"com.aeriacanada.pumpupthejams"},{"app_id":"6d99f21d","application_name":"Stack Tap Disco Star (Archived)","platform":"apple_itunes","bundle_id":"tempBundleId5a8702b0bba1b3.94048252"},{"app_id":"704c1895","application_name":"Super Block Hero","platform":"apple_itunes","bundle_id":"tempBundleId5acf7d46c5c017.09138543"},{"app_id":"6e17588d","application_name":"Super Block Hero","platform":"google_play","bundle_id":"com.aeriacanada.superblockhero"},{"app_id":"7e0a7dd5","application_name":"Superhero: Cube City Justice","platform":"apple_itunes","bundle_id":"com.aeriacanada.superherocubecity"},{"app_id":"6a62879d","application_name":"Superhero: Cube City Justice","platform":"google_play","bundle_id":"com.blockygamesstudio.superherocubecityjustice"},{"app_id":"6ae51945","application_name":"Survival Block Race","platform":"google_play","bundle_id":"com.badjellyfish.survivalblockrace"},{"app_id":"6d1e57ed","application_name":"Templar Maze Run","platform":"google_play","bundle_id":"tempBundleId5a7a0d723921d6.46317220"},{"app_id":"6d0e9cbd","application_name":"Templar Maze Run","platform":"apple_itunes","bundle_id":"com.aeriacanada.templarmazerun"},{"app_id":"75c9577d","application_name":"The Survival Hungry Games 2","platform":"google_play","bundle_id":"com.topgamestudio.thesurvivalhungrygames2"},{"app_id":"760abd15","application_name":"The Survival Hunter Games 2","platform":"google_play","bundle_id":"com.freegamesstudio.thesurvivalhuntergames2"},{"app_id":"6ddcb0e5","application_name":"Twist Knife Sausage","platform":"google_play","bundle_id":"tempBundleId5a8ef4617cf881.63988375"},{"app_id":"6dde0a15","application_name":"Twist Knife Sausage","platform":"apple_itunes","bundle_id":"tempBundleId5a8effef49f942.34376863"},{"app_id":"6d2cf375","application_name":"Unicorn Runner","platform":"apple_itunes","bundle_id":"tempBundleId5a7b4a9803bfe4.70276843"},{"app_id":"6ce49665","application_name":"iOS TestApp in Android","platform":"google_play","bundle_id":"tempBundleId5a73811f059dd3.86691380"},{"app_id":"7212f3d5","application_name":"test app mediation","platform":"google_play","bundle_id":"tempBundleId5afc7aa9183e12.59637707"}]},"output":[{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6bdcfa3d","origin_name":"American Block Sniper Survival","additional_info":"bundle_id:com.topgamestudio.americanblocksnipersurvival","linked":false,"active":true,"created":"2019-03-05T16:46:17.525Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ce170f5","origin_name":"American Block Sniper Survival","additional_info":"bundle_id:com.topgamestudio.americanblocksnipersurvival","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a9cbc35","origin_name":"American Blocky Street Race","additional_info":"bundle_id:com.crazycommando.americanblockystreetrace","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a9d2f45","origin_name":"Block City Clan Wars","additional_info":"bundle_id:com.crystalbuffalo.blockcityclanwars","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6c10375d","origin_name":"Block City Race Wars","additional_info":"bundle_id:com.badjellyfish.blockcityracewars","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6c17db6d","origin_name":"Block District Crazy Race","additional_info":"bundle_id:com.interpixelarts.blockdistrictcrazyrace","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6943ff45","origin_name":"Block Mine Beach Bomb","additional_info":"bundle_id:com.awesomegamesstudio.blockyminebeachbomb","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"70b5b845","origin_name":"Block Mortal Survival Battle","additional_info":"bundle_id:com.crystalbuffalo.blockmortalsurvivalkombat1","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"694f755d","origin_name":"Block Soldier War Games","additional_info":"bundle_id:com.awesomegames.blocksoldierwargames","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"7743570d","origin_name":"Block Survivor - Rules of Battle","additional_info":"bundle_id:tempBundleId5b572303e19692.27715382","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6913e795","origin_name":"Block Wars Killer Sniper","additional_info":"bundle_id:com.survivalgamesstudio.contractkillersoldierstory","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"7201df75","origin_name":"Block Wars Survival Games","additional_info":"bundle_id:com.topgamestudio.blockislandsurvivalgames","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6c0df80d","origin_name":"Block Wheels Race Game","additional_info":"bundle_id:com.badjellyfish.blockwheelsracegame","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6820122d","origin_name":"Blocky Fast Fury","additional_info":"bundle_id:com.topgamestudio.blockyfastfury","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d11c22d","origin_name":"Blocky Fast Fury","additional_info":"bundle_id:tempBundleId5a7947dac4a8a0.42794980","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6cf19f35","origin_name":"Blocky Fast Fury 2","additional_info":"bundle_id:com.badjellyfish.blockyfastfury2","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a88f575","origin_name":"Blocky Fast Fury 2","additional_info":"bundle_id:com.badjellyfish.blockyfastfury2","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6b8c4c85","origin_name":"Blocky Race Championship","additional_info":"bundle_id:com.interpixelarts.blockyracechampionship","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a8cc77d","origin_name":"Blocky Rally Offroad","additional_info":"bundle_id:com.badjellyfish.blockyrallyoffroad","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ae8052d","origin_name":"Blocky Turbo Kart Racers","additional_info":"bundle_id:com.interpixelarts.blockyturbokartracers","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"71aa73cd","origin_name":"Cascade2.0 DummyApp","additional_info":"bundle_id:tempBundleId5af33a01d86d78.64195905","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6bbf501d","origin_name":"City Tour Racing Karts","additional_info":"bundle_id:com.badjellyfish.citytourracingkarts","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6858b40d","origin_name":"Clan Outlaw: Gun Craft 3D","additional_info":"bundle_id:com.crystalbuffalo.clanoutlawguncraft3d","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"692cd98d","origin_name":"Cops VS Robbers Prison Escape","additional_info":"bundle_id:com.crystalbuffalo.copsrobbersprisonescape","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6be464c5","origin_name":"Cops Vs Robbers: Jail Break","additional_info":"bundle_id:com.freegamesstudio.copsvsrobbersjailbreak","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d0d0a05","origin_name":"Cops vs Robbers Blocky Pursuit","additional_info":"bundle_id:tempBundleId5a7879326ec5d4.35676219","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a648d65","origin_name":"Cops vs Robbers Blocky Pursuit","additional_info":"bundle_id:com.interpixelarts.copsvsrobbersblockypursuit","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6bb0ee1d","origin_name":"Cops vs Robbers Hot Chase","additional_info":"bundle_id:com.interpixelarts.copsvsrobbershotchase","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6889eb65","origin_name":"Cops vs Robbers Hunter Games","additional_info":"bundle_id:com.survivalgamesstudios.copsvsrobbershuntergames","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e766845","origin_name":"Cops vs Robbers Survival Games","additional_info":"bundle_id:tempBundleId5a9ec64d6fa782.13117903","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e76db55","origin_name":"Cops vs Robbers Survival Games","additional_info":"bundle_id:tempBundleId5a9ed0a556e833.13815183","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ae6abfd","origin_name":"Cube City Race Game","additional_info":"bundle_id:com.interpixelarts.cubecityracegame","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ce42355","origin_name":"Cube Soldiers: Crisis Survival","additional_info":"bundle_id:com.aeriacanada.cubesoldierscrisissurvival","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6f5f3aa5","origin_name":"Cube Soldiers: Crisis Survival","additional_info":"bundle_id:com.crystalbuffalo.cubesoldierscrisissurvival","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ed0133d","origin_name":"Cube Steel Maximum Survival","additional_info":"bundle_id:com.aeriacanada.CubesteelMaxsurvival","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a5b1d15","origin_name":"Cube of Duty: Ghost Blocks","additional_info":"bundle_id:com.freegamesstudio.cubeofdutyghostblocks","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6c10aa6d","origin_name":"Cubes Crash Death Race","additional_info":"bundle_id:com.badjellyfish.cubescrashdeathrace","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6bd675d5","origin_name":"Cubes Demolition Mad Race","additional_info":"bundle_id:com.interpixelarts.cubesdemolitionmadrace","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6bd3fcfd","origin_name":"Cubes For Speed City Race","additional_info":"bundle_id:com.badjellyfish.cubesforspeedcityrace","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6eb6ae35","origin_name":"Diverse Block Survival Game","additional_info":"bundle_id:com.topgamestudio.thedivergentsurvivalgames","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.526Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ad6f0cd","origin_name":"Extreme Blocky Wheels","additional_info":"bundle_id:com.crazycommando.extremeblockywheels","linked":false,"active":true,"created":"2019-03-05T16:46:17.526Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e924625","origin_name":"Fluffy Rainbow Rush","additional_info":"bundle_id:com.aeriacanada.fluffyrainbowrush","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e92b935","origin_name":"Fluffy Tap","additional_info":"bundle_id:tempBundleId5aa172756c7291.22017801","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e195e55","origin_name":"Hero Cube Color","additional_info":"bundle_id:tempBundleId5a95fb62cd7895.58717813","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"7ad266bd","origin_name":"Hero Storm - Save the World","additional_info":"bundle_id:com.aeriacanada.herostorm","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"681eb8fd","origin_name":"House of Blocks FPS","additional_info":"bundle_id:com.freegamesstudio.houseofblocksfps","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6aa8324d","origin_name":"Lucky Blocks Racing","additional_info":"bundle_id:com.badjellyfish.luckyblocksracing","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a650075","origin_name":"Mad Blocks N Fury","additional_info":"bundle_id:com.gunchimpstudios.madblocksnfury","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a967155","origin_name":"Mega Race Cube Chaos","additional_info":"bundle_id:com.gunchimpstudios.megaracecubechaos","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ab454fd","origin_name":"Mine Cars Championship","additional_info":"bundle_id:com.interpixelarts.minecarschampionship","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ae1f3d5","origin_name":"Mine Kart Turbo","additional_info":"bundle_id:com.badjellyfish.minekartturbo","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a8e5a35","origin_name":"Mine Karts Go!","additional_info":"bundle_id:com.interpixelarts.minekartsgo","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6eedbd5d","origin_name":"Most Wanted Craft Attack","additional_info":"bundle_id:tempBundleId5aaacd71890487.04564304","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"68fde185","origin_name":"Most Wanted Craft Attack","additional_info":"bundle_id:com.awesomegames.mostwantedcraftattack","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"71cd4925","origin_name":"Most Wanted Jail Break","additional_info":"bundle_id:com.topgamestudio.mostwantedjailbreak","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"818925bd","origin_name":"Most Wanted Jail Break","additional_info":"bundle_id:com.topgamestudio.mostwantedjailbreak","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e24d46d","origin_name":"Mutant Block Zombie Attack","additional_info":"bundle_id:com.topgamestudio.mutantblockzombieattack","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e614855","origin_name":"Mutant Block Zombie Attack iOS","additional_info":"bundle_id:tempBundleId5a9d6b0e5a4409.21778000","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6bc23c05","origin_name":"Nitro Cube Racing","additional_info":"bundle_id:com.gunchimpstudios.nitrocuberacing","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"75caea35","origin_name":"Rescue Robots Survival Games","additional_info":"bundle_id:com.freegamesstudio.transformingsurvivalgames","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ad477f5","origin_name":"Road Block Racing","additional_info":"bundle_id:com.badjellyfish.blockydrifttokyochallenge","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"74f8576d","origin_name":"Robot Ninja Battle Royale","additional_info":"bundle_id:com.crystalbuffalo.CubesteelMaxsurvival","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6dcd2f3d","origin_name":"Royal Age - Survival War Games","additional_info":"bundle_id:com.topgamestudio.wildhuntersurvivalfps","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6dcda24d","origin_name":"Royal Age - Survival War Games","additional_info":"bundle_id:tempBundleId5a8e24fb64b8b5.64887939","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e38d4b5","origin_name":"Skyblock Island Survival Game","additional_info":"bundle_id:com.freegamesstudio.skyblockislandsurvivalgames","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"69f0d0cd","origin_name":"Skyblock Island Survival Games","additional_info":"bundle_id:com.freegamesstudio.skyblockislandsurvivalgames","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d0e6335","origin_name":"Skyblock Island Survival Games (Archived)","additional_info":"bundle_id:tempBundleId5a7893ee2f2736.26018816","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d5ed765","origin_name":"Splashy Dummy","additional_info":"bundle_id:tempBundleId5a81c3937e4611.78725511","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d5ff70d","origin_name":"Splashy Dummy Jump","additional_info":"bundle_id:com.aeriacanada.splashydummyjump","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d990bfd","origin_name":"Stack Tap Disco Star","additional_info":"bundle_id:com.aeriacanada.pumpupthejams","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e27c055","origin_name":"Stack Tap Disco Star","additional_info":"bundle_id:com.aeriacanada.pumpupthejams","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d99f21d","origin_name":"Stack Tap Disco Star (Archived)","additional_info":"bundle_id:tempBundleId5a8702b0bba1b3.94048252","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"704c1895","origin_name":"Super Block Hero","additional_info":"bundle_id:tempBundleId5acf7d46c5c017.09138543","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6e17588d","origin_name":"Super Block Hero","additional_info":"bundle_id:com.aeriacanada.superblockhero","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"7e0a7dd5","origin_name":"Superhero: Cube City Justice","additional_info":"bundle_id:com.aeriacanada.superherocubecity","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6a62879d","origin_name":"Superhero: Cube City Justice","additional_info":"bundle_id:com.blockygamesstudio.superherocubecityjustice","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ae51945","origin_name":"Survival Block Race","additional_info":"bundle_id:com.badjellyfish.survivalblockrace","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d1e57ed","origin_name":"Templar Maze Run","additional_info":"bundle_id:tempBundleId5a7a0d723921d6.46317220","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d0e9cbd","origin_name":"Templar Maze Run","additional_info":"bundle_id:com.aeriacanada.templarmazerun","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"75c9577d","origin_name":"The Survival Hungry Games 2","additional_info":"bundle_id:com.topgamestudio.thesurvivalhungrygames2","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"760abd15","origin_name":"The Survival Hunter Games 2","additional_info":"bundle_id:com.freegamesstudio.thesurvivalhuntergames2","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ddcb0e5","origin_name":"Twist Knife Sausage","additional_info":"bundle_id:tempBundleId5a8ef4617cf881.63988375","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6dde0a15","origin_name":"Twist Knife Sausage","additional_info":"bundle_id:tempBundleId5a8effef49f942.34376863","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6d2cf375","origin_name":"Unicorn Runner","additional_info":"bundle_id:tempBundleId5a7b4a9803bfe4.70276843","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"6ce49665","origin_name":"iOS TestApp in Android","additional_info":"bundle_id:tempBundleId5a73811f059dd3.86691380","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"},{"ad_network_type":"IronSrc","ad_network":"5a04d70d4b5d1d634c92f4b9","origin_id":"7212f3d5","origin_name":"test app mediation","additional_info":"bundle_id:tempBundleId5afc7aa9183e12.59637707","linked":false,"active":true,"created":"2019-03-05T16:46:17.527Z","created_by":"5af0af6603dec02c90113092","updated":"2019-03-05T16:46:17.527Z","updated_by":"5af0af6603dec02c90113092"}]}
Get Placements Process
In Herby, with the appropriate credentials, you can go to Config -> Linked Accounts. It shows an overview of all the ad networks. From there, you can select an individual ad network. In the upper right is an icon of a clipboard with a checkmark. Clicking on that brings up the URL:
- getPlacements() calls getPlacements() and normalizePlacements() on the target ad network.
- updatePlacements() finds any existing placement (in the placements table, matching by origin_id) and updates the information in it.
- linkNewPlacements() seems to find ‘unlinkedPlacements’ and links them to a game if possible.
- renderPlacementSummary() shows the
config_getPlacements pug file, showing new placements created and placements updated (as shown below).
How to Link Games
I’ve finally figured out how to link placements to games. (I would love to simplify this process).
- Go to Config -> Linked Accounts, click on the network that you want to add accounts to, and then click on the “Get placement list” clipboard icon. This will find the placements from that ad network.
- Go to Config -> Games and choose the game you’d like to link the placement to. Click the ‘add existing placement’ plus button. Filter and find your unlinked placement in the list. Link it up.
- If you go back to see the linked placements (as done in Step 1), you’ll see they are now linked.
Another Mystery
In the games table, the games has an entry for unity_id, admob_id, vungle_id, etc. There are some places where this seems to be updated. It looks important for a table called Adsales which doesn’t actually exist in the database. I’m struggling to understand what this might be for.
Aha!
I finally found out why we weren’t getting any data from Chocolate into the database, even though it was requesting it using the API.
In queueHandler.dailyRequestData, it had:
if (["Heyzap"].includes(job.data.adNetwork.adnetwork)) {
...
}
else if (["UnityAds", "Vungle", "Chartboost", "Applovin", "IronSrc", "Adcolony", "AdMob", "InMobi"].includes(job.data.adNetwork.adnetwork)) {
...
}
That’s frustrating, as it could surely have been engineered better than that!
I added chocolate to else if clause, and added an ‘else’ to help people in the future, but I think perhaps this should be refactored.
With this done, we can get decent results — it’ll populate our charts and graphs.
These other functions seem to be for adding some sort of detail.
I wondered if the idea was one group of functions would get overview data, and one country data, but it isn’t clear, and they sure don’t seem to be tagged that way.
For instance, this query:
db.getCollection(‘adrevenues’).aggregate( [ /*{$sample: {size: 100000}},*/ {$match: {date: new Date(“2018-12-01”)}}, {“$group”: { “_id”: { ad_id: “$ad_id”, split_by: “$split_by”}, count: {$sum: 1} } }, {$project: {ad_id: “$_id.ad_id”, split_by: “$_id.split_by”, count: 1, _id: 0}}, {“$sort”: {ad_id: 1, split_by: 1}} ])
returned ‘country’ for every ad network, and not ‘overview’ at all. (There are ‘overview’ entries in the database, but certainly not one for every given date). The same query for a year earlier does give overview entries.
Given that InMobi was the last ad network Homero implemented, and these functions aren’t implemented there, I am deciding to not implement them.
getGameDataByCountry() ← getDataByCountry()
all ad networks except InMobi.
normalizeDataByCountry() ← normalizeDataByCountry()
all ad networks except InMobi.
normalizeDataByCounty() ←normalizeDataByCountryGameRequest()
only implemented by Heyzap
getGameData() ← getData()
all ad networks except AdMob and InMobi.
getGameDataYesterday() ← not actually called
implemented in about half of the ad networks (namely Chartboost, Vungle, Ad Colony, Applovin, Heyzap)
How to publish / update games in iOS
Purpose
This post explains how to publish a game in iOS Store since the very beginning as well as how to update an existing game in the Store.
First requirements
To be able to follow along this tutorial, you need to have an iOS computer (either iMac or MacBook) with at least iOS version 10.13 High Sierra. Also you need yo have installed Xcode version 10.0 or higher. The version of Unity will vary depending on the project you are trying to update. For this tutorial I’ll use Unity 2018.1.6f1.
Unity configurations
First of all, download the iOS module in Unity. To doing this you need to go to File > Build Settings (Shift + Command + B), then in the Platform section click in iOS. If you don’t see the module loaded click in Open Download Page and install the corresponding package. Once it’s done and you restarted Unity, you should see something like this (also make sure your default settings here are correct):

Then in the same window click Player settings. Now here comes the funny part, here is where you will change all the specific setting for iOS. The first 4 sections (Icon, Resolution and Presentation, Splash Image & Debugging and crash reporting) should be fine with the default settings, you should be able to create a functional build without moving these sections. And the last section (XR Settings) as well (unless you are messing with AR or VR, which is awesome) should be left with the default settings. The section that concern to us is the Other Settings:


- 1.- Game info: here you will edit the game information, such as the game and the company. Please note that the name typed here should be EXACTLY THE SAME as the name you will use in the App Store.
- 2.- Game icon: this icon must be in 1024×1024 resolution. All the other sizes for the iDevices are managed automatically in Xcode, so do not worry about that.
- 3.- Game identification: this is the main identification of your game. The Bundle Identifier works like in Android, it should be unique for every game. If you’re updating an existing game in the store, please use the same one that is registered in Apple (we’ll see where and how later, just keep in mind this field). The Version and the Build number work as the BVC does in Android, but with the difference that you can use any combination possible, e.g. you could have a version 1.0 with a build number 0, after that you could either bump up the build number to 1 and keep the version as 1.0 or you could change the version number to, let’s say, 1.1 and reset the build number to 0. Remember that if you upload a build with X version and build number to Apple (even if it failed in something), then you can’t upload again that same version+build number.
Then the Signing Team ID is the number of your team in Apple; you can find this ID under the Membership tab in Apple Developer Website. We’ll see in more detail how to access to this site later. - 4.- iOS versions: the Target Device is recommended to be iPhone + iPad but this could vary depending on your project specifications. The Target SDK should always be as Device SDK when you want a build for production and/or internal testing (or TestFlight), but you could change that to Simulator SDK if you want to run a test version in your simulator (we’ll see also how to run a simulator on your Mac later, do not despair). Finally, the Target minimum iOS Version should be 8.0, because there are not so many devices with lower versions, but it’s up to you if you wanna change that version (keep in mind that if you choose a lower version, you could see different errors in the build).
- 5.- Logging: this is very descriptive, you can choose what to send to the logs in your production builds, it could come in handy when you’re debugging something, just keep that in mind. It’s recommended that if you already tested the game and it’s good to go, you could check everything to None (except Errors perhaps).
- ALL THE OTHER SETTINGS ARE RECOMMENDED TO BE LIKE THE IMAGES. SOMETHING COULD GO WRONG OTHERWISE. But, of course, if you know that changing some settings will improve your game in something, please do so. But if you don’t know what those settings do, keep them like the images.
Building in Unity
Ads mediation
Just before building, something to consider about the ads: you are free to use the ad mediation that suits better for your project needs, however, IronSource has been proved and tested in several iOS games and is the one that works better. If your game has another mediation, you should consider changing to IronSource (if you don’t want to mess with a new mediation). To do so, you could follow the steps in this process about how to create new placements: Iron Source update. Of course, it’s not that easy, you should delete the unnecessary files of the old mediation; if you were using cascades, you can follow this document in order to know what to delete (this could vary depending on the version of cascades you are using): Removing AdNetwork SDK. After removing the old mediation, you can import the full ad package that you will use (IronSource is recommended).
Double check anchoring and positioning
When you have the iOS platform selected in Unity, you will be able to choose between different resolutions for your Game screen. I encourage you to double check your game with different resolutions and see how the UI looks; you might need to fix some anchors in your game. There is no proper tutorial for that, you will need to do it by hand or ask for help to your UI artist of trust.

Create new build
If your game looks good and everything seems to be ok, you are ready tu build it. Do it like you normally build your Android games, go to Build Settings > Build. If everything is correct without errors, you’ll see something like this in your Finder:

Sometimes, depending on the version of Unity you have, the Xcode build might need to open a Terminal to compile some files with cocoapods, which should be already installed with your Xcode version 10 or higher and the process is automatically managed, so do not worry about it.
Xcode build and upload
One thing to know is that if you are going to build a new version of your app, but you already have one created, you need to Replace the content, DO NOT APPEND IT.

Once your build is done, open the Unity-iPhone.xcodeproj. Your Xcode will open and after some internal processing and compilations, you will see something like this:

There a few thing to notice here:
- Project: This is where you need to click to open the current app settings and configurations.
- General: This is the main tab where you’ll change some of the more important settings. Make sure you enter here before doing anything else.
- Current project: Under this section you’ll only need to change a few settings showed here. You should only see two tabs inside this section:
-
- Info: everything should be left with their default values.

- Build Settings: make sure you choose the Standard Architectures under the Architectures section. Everything else should be left as default.

The next thing to check under the same tab is the Signing section, make sure everything is like this:

- Info: everything should be left with their default values.
- Current target: In here you will need to check the main settings and configurations. But first, let’s finish some more stuff.
- Test Build: We’ll use TestFlight for testing and/or sending IPA files to members of the team, so this Test target won’t be needed, you’re free to leave it or remove it. You can right-click on it and Delete it with out any concern.
- Info.plist: This one is really important, it informs to Apple what’s inside the app, which should include specific data about some third parties, such as the ads, so you need to add a new Property with a Key called “NSCalendarsUsageDescription” with the Description “Some ad networks use calendar data“, or any other you want.


- Game identification: Ok, now that we have the first steps covered, we can start checking out the main settings. Under this section you’ll need to make sure that the info provided here should be the same than the info in Unity, as we saw in the Unity configurations.
- App signing: The first thing you need to do here is check the Automatically manage signing checkbox. You’ll need to configure Xcode with the same account you registered with the App Store Connect. If everything is done correctly you should be able to choose Aeria Canada Studio under the Team select input. If something is wrong with the Provisioning File or you need to create a new one, check these steps before:
-
- Access to the Certificates, Identifiers & Profiles page (click here) and make sure you are in the correct company. After that click in Identifiers > App ID on the menu on your left. Here is where you can create a new app specifications.

The App Name should be exactly the same as the one you are planing to be in the Store. For the App ID Sufix you should select Explicit App ID and write the one that works as a Bundle Identifier in Unity. The App Services should be left as default, unless you are using something extra. Save after everything is filled correctly. - After everything is created (or you are just editing an existing app) you should be able to fill everything in the Signing section in your Xcode project.
- Access to the Certificates, Identifiers & Profiles page (click here) and make sure you are in the correct company. After that click in Identifiers > App ID on the menu on your left. Here is where you can create a new app specifications.
- Deployment version: This is where you’ll choose the iOS versions you’ll include for your build. It’s recommended to choose 8.0 or higher. Also make sure you choose Universal under the Devices select.
- Capabilities: This is where you’ll choose some other features that your game will have. Just turn on the options you’ll use, e.g. In-App Purchases or Game Center if your app has leaderboards and/or achievements.

- Build Settings: Here is just a double check of something you should already have. As we saw before, you should make sure Standard Architectures are selected. Also in the Build Options, make sure Enable Bitcode is enabled.

Apple Store configuration
Once everything in your Xcode project is done and you have a working app (and you have tested it already), then you are ready to create the placements and all the requirements in App Store. First go to App Store Connect and make sure you are logged in with the correct company. Then go to My Apps.
Create app store placement
DO THIS ONLY IF YOU ARE CREATING A NEW APP.
Click on the + icon on your top-left. Then choose New App (or new macOS App if you’re doing that).

Fill the required data with the info about your app. Everything should be very intuitive. For the Bundle ID you should choose the one you created in the steps before. The SKU is a unique ID for each app, you could choose any name you want but it’s easier if you choose the same from the Bundle Identifier in Unity. The access should be Full for all users.

After doing that you should see an empty layout for a new app. Under the App Information section you should fill everything according to the game you’re publishing. All the fields should be self explanatory.

In the next section, Pricing and Availability, you only need to choose the price your app will have (Free is chosen by default as well as the availability in all territories).
The section below, will have all the info for the App Store Page, which includes screenshots, description, keywords, etc. If you have doubts about some legal info (such as the Copyright and Trade Representative Contact Information), you should copy the same info from another published app.

In this page, there is an interesting section, that asks you for a Build, this will be the one you will upload through Xcode. Skip the next step to see how to do this.

Create an update placement
DO THIS ONLY IF YOU ARE UPDATING AND EXISTING APP.
Click on the app you want to edit and add a new version. This will ask you for a new Version number (remember what I told you about Version numbers and Build number, keep that in mind).

The new placement will have the same info for some fields, you’ll need to worry only for the Build, at least you want to change the description or something else. IMPORTANT: if you want to edit a single field (like a single letter in a keyword [yes, those things happen]), you’ll need to upload a WHOLE. NEW. BUILD. I know, I know, what build? Let’s see in the next step!
Sending app to review
Even if you come from the step regarding publishing a new app or editing an existing one, you will need to do all of this to upload a new build. Remember Xcode? Yeah we were just editing stuff in there a few steps ago. That one. If you think your game is ready, if it runs well in your device and/or your simulator, you can try building it. In Xcode go to Product > Build (Command + B).

This might take several minutes but if everything is fine you should receive a Successful message. BUT, if you have an error, well, I believe in you, you should be able to fix it, solve it, debug it and so on. This is how it looks when everything is fine:

When that is done, you should proceed to Archive. This will make the build available to upload to Apple. Go to Product > Archive.

If everything is done correctly and you don’t see further issues, a new Organizer window should be there (which you can access from Xcode by going to Window > Organizer).

Select which version you want to upload and follow the instructions.

Everything should be really intuitive and all the default settings should be fine. Just click in “Save”, “Continue” or “Upload”, whatever the case is and the game will be fine. After everything is done, you should see a successful message. This whole process could take several minutes. After receiving the OK message and after a few more minutes, you should receive an email from Apple saying that the build has finished processing and that it’s ready to be used in a new build.
Publish app (if Apple wants you to)
When your build has finished processing and you receive the email from Apple, you can go back to where you need a build to select in App Store Connect. Select the one that just finished processing and click in Save (in the top-right corner). If everything else is filled, you’ll see the “Submit for Review” button available. Click on it. It will ask for new info regarding encryption and third party libraries (ads mostly). If you didn’t add something special about encryption, you should deselect that option. If you’re game has ads, then select all the options in the second section. After that you are DONE, yes! Finally!
Or may be not.
You can now send the formal app for review to Apple. This now might take a few or several days. Apple will check your app in detail and they will send you a message if they find something odd or weird or something not right with their policies. Sometimes these messages that they send are quite descriptive, so you can fix it a send a new app (yes, you guessed correctly, you should do a whole new process: build in Unity, build in Xcode, upload, and so on).
After a few attempts (or after the first one, if you are really lucky or really awesome), Apple will give you green light and you can now choose to make your app available For Sale, which means that it will be live. You could choose to release your apps manually (may be on Fridays, ASO* wise) or to be released whenever Apple thinks they are good to go.
This is everything you should know about iOS publishing. If you have some more questions which are not answered is this post, do not hesitate in sending me an email or a Skype or a letter or an owl. Cheers!
* App Store Optimization. This is a whole new subject which I won’t cover in this tutorial but you’re free to research and to do whatever you feel is best for the apps.
How to publish / update games on Windows
In this guide I will show you how to publish or update a game in the Windows store, for this you will need the game already exported in “.appxupload” format (in this guide we will not cover how to export and build projects for windows).
First you need to log in to the windows portal from this address (ask Ponch for username and password):
https://developer.microsoft.com/en-us/windows
After log in you need to click in the dashboard menu.
In the dashboard you can see all the games, the status and acquisitions.
Publishing a new game
For publishing a new game you need to click in the “Create a new game button” in the main dashboard.
Then you just need to put the name of the new game you want to create and check “Do not create this product in a sandbox” and click “Reserve product name”.
After this you will be inside the game overview where you can start a new submission of the game by clicking “Start submission”.
After creating a submission you need to fill all the information needed step by step, so first you need to start with “Pricing and availability”.
Inside Pricing and availability just scroll to the end and click “Save”, this will set the game FREE in all regions available.
Next we need to setup the properties of the game.
You need to fill this parts with the information showed in the next images.
Next we need to setup the Age Rating of the game.
You need to fill this parts with the information showed in the next images.
Next we need to Upload the package of the game, click on “Base” to enter the package upload screen.
You need to drag in the gray area or browse the file to start the upload, after some time it will validate and select on which devices you can run the game (if the Windows 10 Holographic appear as selected just disable it)
After uploading the package just click “Save”.
After doing all this steps you can now set the store of the game by clicking on the language available.
In this part you can upload the description / screenshots / icons, when finished click “Save”.
After finishing all this steps you just need to click in “Submit to Store”.
Update a game
For Updating a game, you just need to enter the game and click in the “Update” button, if you click on the submission you will enter but in a read-only mode.
Once you are inside you can edit the properties, package, store, etc. and then just click “Submit”.
How to visualize heatmaps [HUB]
Purpose
This post explains how to integrate the Heatmapper tool into the Hub game and how to visualize real data.
Install package
Sync to the Hub repo and to the master branch. Open your project in Unity 2017.2.1f1 and search “Heatmapper” in the Asset store. Then choose the option from Unity and import it:


First settings
After importing the package you’ll have new menus. Open them in new tabs and place them in the editor:

Open the Raw Data tab and click on Generate Test Data. Make sure that Demo Data is selected. You can choose any type of Demo, this is only for “ignite” the mapper. After that click on Generate:

Remember to click on Purge before importing or creating new data. This will delete all the files so you can fresh create new records.
Visualize demo data
Inside the Heatmapper tab, click on Reset (you should click on Reset before processing, because some data may be leaked from older maps) and then Process. You’ll see some random points in your active scene. If you don’t, contact the PM you trust the most.

You should see something like this inside your Scene tab:

Common issues
- If you don’t see anything after processing the data, click on Open Folder inside the Heatmapper tab. Then open the corresponding folder of the game you’re editing and open the RawData folder and if you don’t see any file created there, make sure the folder has access and edit permissions (mostly for Mac).
- If you see some errors in the console related to the Heatmapper plugin, just restart Unity
Feel free to add your issues to this list.
Importing real data
Requirements
- For Windows users make sure you have this installed: 7-zip.
- For Mac users make sure you have gzip installed: Gzip
On the Heatmapper tab, click on Open Folder, open the corresponding folder of the game you’re editing and open the RawData folder. You should see some files like these ones:

Select the first file with a .gz extension. Copy the number in its name. In this case we just need the “1531159781000” text.
After that, you can go to this site: Data manager. Choose your game, the date ranges, the # of results you want to limit, the level you want and in the input that says File name paste the number you copied from the gz file. At the end click on Download Data. If everything is done correctly, you should see a txt file.

Now you should remove the txt extension to that file. Just rename it and remove the “.txt” suffix. If you see this alert, accept it:
Windows version

After that you need to compress this file into a gz:
If you’re using Windows, just right click it -> 7-Zip -> Add to file. Then in File format choose gzip and Accept.


If you’re using Mac you can just go with your terminal to the location of your file and use the command “gzip” and the name of your file:

Finally and once you have the gzip file, you need to replace the gzip file with the same name in the RawData folder with the gzip you just created. Then go back to Unity and in the Heatmapper tab click again Reset and Process. You should see now REAL DATA!!!

Remove phone permissions Unity
In this tutorial it is shown how to remove Phone permission on C-code games.
Step #1
Remove from all android manifests this line:
<uses-permission android:name=”android.permission.READ_PHONE_STATE” />
Step #2
All AndroidManifests should have minSdkversion like this:
<uses-sdk android:minSdkVersion=”16″ />
if it doesn’t have it, add it
NOTE: other permissions like Storage could be from third-party plugins like ad networks, and needs to be checked depending of the game

















































