# SDK Methods

Complete reference for the Positive User Android SDK public API.


# Initialization

# UserCom.Builder

new UserCom.Builder(Application, String sdkKey, String apiKey, String domain)
Method Type Default Description
trackAllActivities(boolean) boolean false Automatically track all Activity and Fragment lifecycle events
setDefaultCustomer(Customer) Customer - Start with an identified contact instead of an anonymous one
setOnSdkInitializedListener(OnSdkInitializedListener) OnSdkInitializedListener - Callback fired when the SDK finishes initial contact registration
openLinksInChromeCustomTabs(boolean) boolean true Open in-app message links in Chrome Custom Tabs
setCustomTabsBuilder(CustomTabsIntent.Builder) CustomTabsIntent.Builder - Customize Chrome Custom Tabs appearance
build() void - Builds the SDK

# UserCom.getInstance()

Returns the initialized SDK instance. Throws AssertionError if called before build().


# Contact

# register(Customer, CustomerUpdateCallback)

Identifies the current contact. Retrieves the FCM token and sends it along with customer data.

UserCom.getInstance().register(customer, callback)

# logout()

Clears all contact data, detaches the FCM token, and starts a new anonymous session.

UserCom.getInstance().logout()

# Events

# sendEvent(String, Map<String, Object>?)

Sends a custom event.

UserCom.getInstance().sendEvent("button_tapped", mapOf("screen" to "home"))

# sendProductEvent(String, ProductEventType, Map<String, Object>?)

Sends an e-commerce product event.

UserCom.getInstance().sendProductEvent("SKU-1234", ProductEventType.PURCHASE, params)

# trackScreen(String)

Records a screen view.

UserCom.getInstance().trackScreen("Checkout")

# Notifications

# onNotification(Context, RemoteMessage)

Passes an incoming FCM message to the SDK. Returns true if handled.

val handled = UserCom.getInstance().onNotification(applicationContext, remoteMessage)

# handleRouteFromNotification(Intent)

Records a notification click when the app opens from a notification. Returns true if the intent contained a Positive User notification. Call from your launcher Activity's onCreate().

UserCom.getInstance().handleRouteFromNotification(intent)

# In-app messages

# setFontResolver(FontResolver)

Provides a custom Typeface for named fonts used in in-app message templates.

UserCom.getInstance().setFontResolver { name ->
    Typeface.createFromAsset(assets, "fonts/$name.ttf")
}

FontResolver interface:

public interface FontResolver {
    Typeface resolve(String name);
}

# setInAppNotificationClickHandler(ClickHandler?)

Intercepts button clicks in in-app messages. Pass null to restore the default Chrome Custom Tabs behavior.

UserCom.getInstance().setInAppNotificationClickHandler { url ->
    // handle url
}

ClickHandler interface:

public interface ClickHandler {
    void onClicked(String url);
}

# Customer

Fluent builder for contact identity and attributes.

Method Field Type
.id(String) user_id String
.firstName(String) first_name String
.lastName(String) last_name String
.email(String) email String
.attr(String, String) custom attribute String
.attr(String, Boolean) custom attribute Boolean
.attr(String, Int) custom attribute Int

# UserComNotification

Parses a Positive User notification payload from either a Bundle (Activity intent extras) or a Map<String, String> (FCM remote message data).

# create(Map<String, String>)

@Nullable
public static UserComNotification create(Map<String, String> body)

# create(Bundle?)

@Nullable
public static UserComNotification create(@Nullable Bundle bundle)

Returns null if the data doesn't contain the user_com_notification key.

Getters:

Method Type Description
getId() String Notification ID
getType() int Notification type constant
getTitle() String Notification title
getMessage() String Notification body
getLink() String? Action URL, if present
getRawData() Map<String, String> Full raw payload
getDate() Date Time the object was created

# ProductEventType

Value Description
ADD_TO_CART
PURCHASE
LIKING
ADD_TO_OBSERVATION
ORDER
RESERVATION
RETURN
VIEW
CLICK
DETAIL
ADD
REMOVE
CHECKOUT
CHECKOUT_OPTION
REFUND
PROMO_CLICK

# OnSdkInitializedListener

Callback for SDK initialization result.

Method When called
onSdkInitialized(Customer) SDK finished registering the initial contact
onUserRegistrationFailed() Initial registration failed (e.g. no network)

# CustomerUpdateCallback

Callback for register().

Method When called
onSuccess(RegisterResponse) Contact registered successfully
onFailure(Throwable) Registration failed

RegisterResponse.getKey() returns the Positive User internal contact key (user_key).