Skip to content

adzerk/adzerk-android-sdk

Repository files navigation

Adzerk Android SDK

An Android SDK for the Adzerk Native and UserDB APIs

Download

Grab via gradle

implementation 'com.adzerk:sdk:2.3.+'

The SDK uses Java 8 and supports a minimum Android 5.1 (API level 22).

To target a client application with minimum SDK <26, refer to the Android Java 8 support documentation.

Usage

Create an instance of the AdzerkSdk for your networkId:

AdzerkSdk sdk = new AdzerkSdk.Builder().networkId(23L).build();

Create an instance of the AdzerkSdk and also provide a hostname:

AdzerkSdk sdk = new AdzerkSdk.Builder().networkId(23L).hostname("custom.host.com").build();

Build a request for placements

Request request = new Request.Builder()
      .addPlacement(new Placement("div1", <site_id>, <ad_types...>))
      .addPlacement(new Placement("div2", <site_id>, <ad_types...>))
      .addPlacement(new Placement("div3", <site_id>, <ad_types...>))
      .build();

Submit the request and get a callback for the response

sdk.requestPlacement(request, listener);

Get content and decisions from the response

@Override
public void success(Response response) {
    Decision firstDecision = response.getDecisions("div1").get(0);
    // ...
}

@since SDK v2.2.0+

Recording Impression & Clicks

Use with the fetch ad example above.

// Impression pixel; fire when user sees the ad
String impUrl = decision.getImpressionUrl();
sdk.firePixel(impUrl, listener);
// Click pixel; fire when user clicks on the ad
String clickUrl = decision.getClickUrl();
sdk.firePixel(clickUrl, listener);

Modifying the revenue

// Click pixel; fire when user clicks on the ad and modify the click revenue
//   OVERRIDE: replaces the revenue value of the click/event 
//   ADDITIONAL: adds the specified value to the original revenue value of the click/event
String clickUrl = decision.getClickUrl();
sdk.firePixel(clickUrl, revenue, RevenueModifierType.OVERRIDE, null, listener);

Setting the gross merchandise value for the event.

// Click pixel; fire when user clicks on the ad and modify the click revenue
//   OVERRIDE: replaces the revenue value of the click/event 
//   ADDITIONAL: adds the specified value to the original revenue value of the click/event
String clickUrl = decision.getClickUrl();
Float grossMerchandiseValue = 1.5f;
sdk.firePixel(clickUrl, revenue, RevenueModifierType.ADDITIONAL, grossMerchandiseValue, listener);

Handle the fire pixel response

// status: HTTP status code
// location: click target URL
@Override
public void success(FirePixelResponse response) {
   Log.d(TAG, "Fired! " +
      "status: " + response.getStatusCode() + " " +
      "location: " + response.getLocation());
}

Additional Options

Additional optional parameters supported by the API may be specified via the Builder on the Request or Placement.

Example: to specify eCPM partitions for a Placement:

String[] ecpmPartitions = new String[]{"main", "detail", "footer"};
Request request = new Request.Builder()
    .addPlacement(new Placement("div1", 1133898L, 163)
        .setCount(ecpmPartitions.length)
        .addAdditionalOption("ecpmPartitions", ecpmPartitions))
    .build();

@since SDK v2.1.0+

Distance Targeting

Distance Targeting is supported via Additional Options on the request.

val request = new Request.Builder()
    .addPlacement(Placement("div1", 1133898, (163)))
    .addAdditionalOption("intendedLatitude", 35.91868)
    .addAdditionalOption("intendedLongitude", -78.96001)
    .addAdditionalOption("radius", 50)
    .build()

Multi-Winner Placements

A multi-winner placement returns multiple selections inside a single placement object.

To request multiple winners, specify a count for the Placement object. This requests the maximum number of winners (selections) that can be included in the placement.

Request request = new Request.Builder()
   .addPlacement(new Placement("div1", <site_id>, <ad_types...>).setCount(3))
   .build();

@since SDK v2.0.0+

GDPR Consent

Consent preferences can be specified when building a request. For example, to set GDPR consent for tracking in the European Union (this defaults to false):

Request request = new Request.Builder(placements)
    .setUser(new User(key))
    .setConsent(new Consent(true))
    .build();

@since SDK v0.4.0+

Building

Use gradlew to build library archive

./gradlew assemble

output: sdk/build/outputs/aar

Testing

Run unit tests

./gradlew test

Specify --rerun-tasks to rerun up-to-date tests. To view test reports see:

output: sdk/build/reports/tests

Documentation

Generate the SDK documentation

./gradlew javadoc

output: sdk/build/docs/javadoc

Publishing

Update the version string properties in sdk/build.gradle

Either get a copy of the Kevel Engineering signing key or generate a new signing key using the instructions here:

https://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/

Update ~/.gradle/gradle.properties with your signing information.

./gradlew uploadArchive

Login in to Sonatype OSS, locate the staging package, close, and release it.

About

Access Adzerk's ad serving APIs via Android

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages