Skip to main content
Topsort’s Kotlin library enables our clients to easily send auction requests and track events within Android applications.
Minimum Java version required: 17.

Installation

Add the dependency to your build.gradle file:
dependencies {
    implementation 'com.topsort:topsort-kt:2.0.0'
}

Setup

Kotlin

import android.app.Application
import com.topsort.analytics.Analytics

class KotlinApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Analytics.setup(
            application = this,
            opaqueUserId = "<YOUR_OPAQUE_USER_ID>",
            token = "<API token>"
        )
    }
}

Java

import android.app.Application;
import com.topsort.analytics.Analytics;

public class JavaApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Analytics.INSTANCE.setup(this, "<opaqueUserId>", "<API token>");
    }
}

Reporting Events

Kotlin

// Purchase
fun reportPurchase() {
    val item = PurchasedItem(
        productId = "<Marketplace id for the item>",
        unitPrice = 1295,
        quantity = 20
    )
    Analytics.reportPurchase(
        id = "<Marketplace id for the entire purchase>",
        items = listOf(item),
    )
}

// Click (promoted)
fun reportClickPromoted() {
    val placement = Placement(path = "search_results", location = "position_1")
    Analytics.reportClickPromoted(
        id = "<Marketplace id for the item>",
        resolvedBidId = "<The bid id from the auction winner>",
        placement = placement
    )
}

// Impression (promoted)
fun reportImpressionPromoted() {
    val placement = Placement(path = "search_results", location = "position_1")
    Analytics.reportImpressionPromoted(
        id = "<Marketplace id for the item>",
        resolvedBidId = "<The bid id from the auction winner>",
        placement = placement
    )
}
Add BannerView to your activity XML:
<com.topsort.analytics.banners.BannerView
    android:id="@+id/bannerView"
    android:layout_width="353dp"
    android:layout_height="103dp" />
Setup in your activity:
class SampleActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.sample_activity)

        this.lifecycleScope.launch {
            val bannerView = findViewById<BannerView>(R.id.bannerView)
            val bannerConfig = BannerConfig.CategorySingle(slotId = "slot", category = "category")

            bannerView.setup(
                bannerConfig = bannerConfig,
                screenName = "sample_activity",
                onClick = { id, entityType -> onBannerClick(id, entityType) }
            )
        }
    }
}
For full documentation, see the GitHub repository.