Superwall
The shared instance of Superwall that provides access to all SDK features.
You must call configure() before accessing Superwall.instance, otherwise your app will crash.
Purpose
Provides access to the configured Superwall instance after calling configure().
Signature
companion object {
val instance: Superwall
}// Java
public static Superwall getInstance()Parameters
This is a companion object property with no parameters.
Returns / State
Returns the shared Superwall instance that was configured via configure().
Usage
Configure first (typically in Application class):
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
Superwall.configure(
application = this,
apiKey = "pk_your_api_key"
)
}
}Then access throughout your app:
Superwall.instance.register("feature_access") {
// Feature code here
}Set user identity and attributes:
Superwall.instance.identify("user123")
Superwall.instance.setUserAttributes(mapOf(
"plan" to "premium",
"signUpDate" to System.currentTimeMillis()
))Reset the user:
Superwall.instance.reset()Avoid calling Superwall.instance.reset() repeatedly. Resetting rotates the anonymous user ID, clears local paywall assignments, and requires the SDK to re-download configuration state. Only trigger a reset when a user explicitly logs out or you intentionally need to forget their identity. See User Management for more guidance.
Set delegate:
Superwall.instance.delegate = thisConsume a purchase (2.6.2+):
// Using coroutines
lifecycleScope.launch {
val result = Superwall.instance.consume(purchaseToken)
result.fold(
onSuccess = { token ->
println("Purchase consumed: $token")
},
onFailure = { error ->
println("Failed to consume: ${error.message}")
}
)
}
// Using callback
Superwall.instance.consume(purchaseToken) { result ->
result.fold(
onSuccess = { token ->
println("Purchase consumed: $token")
},
onFailure = { error ->
println("Failed to consume: ${error.message}")
}
)
}Show an alert over the current paywall (2.5.3+):
Superwall.instance.showAlert(
title = "Important Notice",
message = "Your subscription will renew soon",
actionTitle = "View Details",
closeActionTitle = "Dismiss",
action = {
// Handle action button tap
navigateToSubscriptionSettings()
},
onClose = {
// Handle close/dismiss
println("Alert dismissed")
}
)Set integration attributes for analytics (2.5.3+):
import com.superwall.sdk.models.attribution.AttributionProvider
Superwall.instance.setIntegrationAttributes(
mapOf(
AttributionProvider.ADJUST to "adjust_user_id_123",
AttributionProvider.MIXPANEL to "mixpanel_distinct_id_456",
AttributionProvider.META to "meta_user_id_789"
)
)Java usage:
// Access the instance
Superwall.getInstance().register("feature_access", () -> {
// Feature code here
});
// Set user identity
Superwall.getInstance().identify("user123");How is this guide?
Edit on GitHub