Project:AppAudit
This is a good place for User:Haixinshi to discuss his progress Podehaye (talk)
7.23(Le Temps)
Progress:
"Dynamic" means that when we run our modified APP and there is an advertisement showing, then the modified functions will be called and we can store dynamic data(especially advertisement price information).
SDK: AppNexus(Dynamically Tested)
SDK:AppNexus:UTAdResponse We can dynamically access to the following information:
private static final String RESPONSE_KEY_TAGS = "tags"; private static final String RESPONSE_KEY_CONTENT = "content"; private static final String RESPONSE_KEY_WIDTH = "width"; private static final String RESPONSE_KEY_HEIGHT = "height"; private static final String RESPONSE_KEY_PLAYER_WIDTH = "player_width"; private static final String RESPONSE_KEY_PLAYER_HEIGHT = "player_height"; private static final String RESPONSE_KEY_NO_BID = "nobid"; private static final String RESPONSE_KEY_CREATIVE_ID = "creative_id"; private static final String RESPONSE_KEY_ADS = "ads"; private static final String RESPONSE_KEY_NOTIFY_URL = "notify_url"; private static final String RESPONSE_KEY_CONTENT_SOURCE = "content_source"; private static final String RESPONSE_KEY_CLASS = "class"; private static final String RESPONSE_KEY_PARAM = "param"; private static final String RESPONSE_KEY_PAYLOAD = "payload"; private static final String RESPONSE_KEY_ID = "id"; private static final String RESPONSE_KEY_UUID = "uuid"; private static final String RESPONSE_KEY_HANDLER_URL = "url"; private static final String RESPONSE_VALUE_ANDROID = "android"; private static final String RESPONSE_KEY_TYPE = "type"; private static final String RESPONSE_KEY_AD_TYPE = "ad_type"; private static final String RESPONSE_KEY_HANDLER = "handler"; private static final String RESPONSE_KEY_TRACKERS = "trackers"; private static final String RESPONSE_KEY_IMPRESSION_URLS = "impression_urls"; private static final String RESPONSE_KEY_CLICK_URLS = "click_urls"; private static final String RESPONSE_KEY_ERROR_URLS = "error_urls"; private static final String RESPONSE_KEY_TIMEOUT = "timeout_ms"; private static final String RESPONSE_KEY_RESPONSE_URL = "response_url"; private static final String RESPONSE_KEY_NO_AD_URL = "no_ad_url"; private static final String RESPONSE_KEY_TAG_ID = "tag_id"; private static final String RESPONSE_KEY_AUCTION_ID = "auction_id"; private static final String RESPONSE_KEY_SECOND_PRICE = "second_price"; private static final String RESPONSE_KEY_BUYER_MEMBER_ID = "buyer_member_id"; private static final String RESPONSE_KEY_CPM = "cpm"; private static final String RESPONSE_KEY_CPM_PUBLISHER_CURRENCY = "cpm_publisher_currency"; private static final String RESPONSE_KEY_CPM_CURRENCY_CODE = "publisher_currency_code";
SDK: Magnite : Rubicon Advertising(No Dynamic Test)
It is not clear about what information we can collect from this API, but price for a banner ad can be obtained.
- RubiconHelper
- RubiconBanner
SDK: AmazonHB(No Dynamic Test)
We can collect price for an advertisement from Amazon:
- import com.amazon.device.ads.DTBAdResponse;
SDK: Smart AdServer(No Dynamic Test)
Bidding Example We can get bidding information from SASBiddingAdResponse.
- import com.smartadserver.android.library.headerbidding.SASBiddingAdResponse
- import com.smartadserver.android.library.headerbidding.SASBiddingFormatType
- import com.smartadserver.android.library.headerbidding.SASBiddingManager
SDK: Criteo(No Dynamic Test)
SDK Criteo : Bid involves price information. SDK Criteo : CdbResponseSlot involves a abundant information about bidding informtion:
@SerializedName("impId") val impressionId: String? = null, @SerializedName("placementId") val placementId: String? = null, @SerializedName("zoneId") val zoneId: Int? = null, @SerializedName("cpm") val cpm: String = "0.0", @SerializedName("currency") val currency: String? = null, @SerializedName("width") val width: Int = 0, @SerializedName("height") val height: Int = 0, @SerializedName("displayUrl") val displayUrl: String? = null, @SerializedName("native") val nativeAssets: NativeAssets? = null, @SerializedName("ttl") var ttlInSeconds: Int = 0,
SDK: Google ads(No Dynamic Test):
The following two can be matched according to data type:
- SDK:google.android.gem.ads : AdValue pulic reference code
- SDK:google.android.gem.ads : AdValue obfuscated code
- String getCurrencyCode() //The value's ISO 4217 currency code.
- int getPrecisionType() //The precision type of the reported ad value.
- long getValueMicros()//The ad's value in micro-units, where 1,000,000 micro-units equal one unit of the currency.
Questions:
No.
Plans:
- Try to make a class and corresponding methods that can parse and save JSON and other information.
- Try to dynamically test SDKs in terms of advertisement.
- Try to find and collect message flow in Le Temps in terms of advertisement network.