Skip to content

WebView tracking

The SDK can attach a JavaScript bridge to a WKWebView so your web content can send Affise events directly.

@objc public static func registerWebView(_ webView: WKWebView)
@objc public static func unregisterWebView()

AffiseAttributionLib/Classes/Affise.swift:42-53.

The JS resources are packaged with the core pod (resources = "AffiseAttributionLib/Assets/*.{js}"AffiseAttributionLib.podspec:20).

Verbatim:

// retreive WebView from view hierarhy
@IBOutlet weak var webView: WKWebView!
// make sure javascript is enabled
override func viewDidLoad() {
super.viewDidLoad()
webView.configuration.preferences.javaScriptEnabled = true
}
// initialize WebView with Affise native library
Affise.registerWebView(webView)

Verbatim:

let data = { card: 4138, type: 'phone' };
new AddPaymentInfoEvent({
userData: 'taxi',
})
.addPredefinedParameter(PredefinedString.PURCHASE_CURRENCY, 'USD')
.addPredefinedParameter(PredefinedFloat.PRICE, 2.19)
.addPredefinedParameter(PredefinedObject.CONTENT, data);
.send() // Send event

Verbatim:

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 event

Verbatim:

class MyCustomEvent extends Event {
constructor(args) {
super('MyCustom', args)
}
}