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).
Register a WKWebView
Section titled “Register a WKWebView”Verbatim:
// retreive WebView from view hierarhy@IBOutlet weak var webView: WKWebView!
// make sure javascript is enabledoverride func viewDidLoad() { super.viewDidLoad()
webView.configuration.preferences.javaScriptEnabled = true}
// initialize WebView with Affise native libraryAffise.registerWebView(webView)Send events from JavaScript
Section titled “Send events from JavaScript”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 eventPredefined parameters in JS
Section titled “Predefined parameters in JS”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 eventCustom events in JS
Section titled “Custom events in JS”Verbatim:
class MyCustomEvent extends Event { constructor(args) { super('MyCustom', args) }}