WebView tracking
The Affise SDK ships a JavaScript bridge (attribution/src/main/assets/affise.js) that mirrors the native events API. Register a WebView with the SDK and you can fire events directly from HTML/JS.
Initialize a WebView
Section titled “Initialize a WebView”Native API:
Affise.registerWebView(webView: WebView)(attribution/src/main/java/com/affise/attribution/Affise.kt:55-58)Affise.unregisterWebView()(Affise.kt:63-66)
// retrieve WebView from view hierarchyval webView = findViewById<WebView>(R.Id.your_webview_id)// make sure javascript is enabledwebView.javaScriptEnabled = true// initialize WebView with Affise native libraryAffise.registerWebView(webView)Events tracking (JS)
Section titled “Events tracking (JS)”Inside the registered WebView, Affise event classes are available in JavaScript. A demo lives at app/src/main/assets/index.html; the bridge is attribution/src/main/assets/affise.js.
let data = { card: 4138, type: 'phone' };new AddPaymentInfoEvent({ userData: 'taxi',}) .addPredefinedParameter(PredefinedString.PURCHASE_CURRENCY, 'USD') .addPredefinedParameter(PredefinedObject.CONTENT, data) .addPredefinedParameter(PredefinedFloat.PRICE, 2.19) .send(); // Send eventAvailable JS event classes
Section titled “Available JS event classes”The JS bridge exposes the same predefined event classes as the native SDK, including all CustomId01Event…CustomId10Event and all subscription lifecycle events. Full list:. Examples:
AchieveLevelEvent, AddPaymentInfoEvent, AddToCartEvent, AddToWishlistEvent, AdRevenueEvent, ClickAdvEvent, CompleteRegistrationEvent, CompleteStreamEvent, CompleteTrialEvent, CompleteTutorialEvent, ContactEvent, ContentItemsViewEvent, CustomId01Event…CustomId10Event, CustomizeProductEvent, DeepLinkedEvent, DonateEvent, FindLocationEvent, InitiateCheckoutEvent, InitiatePurchaseEvent, InitiateStreamEvent, InviteEvent, LastAttributedTouchEvent, LeadEvent, ListViewEvent, LoginEvent, OpenedFromPushNotificationEvent, OrderEvent, OrderItemAddedEvent, OrderItemRemoveEvent, OrderCancelEvent, OrderReturnRequestEvent, OrderReturnRequestCancelEvent, PurchaseEvent, RateEvent, ReEngageEvent, ReserveEvent, SalesEvent, ScheduleEvent, SearchEvent, ShareEvent, SpendCreditsEvent, StartRegistrationEvent, StartTrialEvent, StartTutorialEvent, SubmitApplicationEvent, SubscribeEvent, TravelBookingEvent, UnlockAchievementEvent, UnsubscribeEvent, UpdateEvent, ViewAdvEvent, ViewCartEvent, ViewContentEvent, ViewItemEvent, ViewItemsEvent.
Subscription lifecycle: InitialSubscriptionEvent, InitialTrialEvent, InitialOfferEvent, ConvertedTrialEvent, ConvertedOfferEvent, TrialInRetryEvent, OfferInRetryEvent, SubscriptionInRetryEvent, RenewedSubscriptionEvent, FailedSubscriptionFromRetryEvent, FailedOfferFromRetryEvent, FailedTrialFromRetryEvent, FailedSubscriptionEvent, FailedOfferiseEvent, FailedTrialEvent, ReactivatedSubscriptionEvent, RenewedSubscriptionFromRetryEvent, ConvertedOfferFromRetryEvent, ConvertedTrialFromRetryEvent, UnsubscriptionEvent.
Predefined event parameters (JS)
Section titled “Predefined event parameters (JS)”let event = ...
event .addPredefinedParameter(PredefinedString.PURCHASE_CURRENCY, 'USD') .addPredefinedParameter(PredefinedFloat.PRICE, 2.19) .addPredefinedParameter(PredefinedLong.QUANTITY, 1) .addPredefinedParameter(PredefinedObject.CONTENT, { card: 4138, type: 'phone' }) .addPredefinedParameter(PredefinedListObject.CONTENT_LIST, [{content:'songs'}, {content:'videos'}]) .send(); // Send eventSource:. See Events tracking for the full list of PredefinedString / PredefinedLong / PredefinedFloat / PredefinedObject / PredefinedListObject / PredefinedListString values.
Custom events (JS)
Section titled “Custom events (JS)”Extend the base Event class to add your own event name:
class MyCustomEvent extends Event { constructor(args) { super('MyCustom', args) }}