initialize method
dynamic
initialize({})
Implementation
initialize({
required int siteId,
required String url,
String? visitorId,
String? contentBaseUrl,
int dequeueInterval = 10,
String? tokenAuth,
}) async {
this.siteId = siteId;
this.url = url;
_dispatcher = _MatomoDispatcher(url, tokenAuth);
// User agent
if (kIsWeb) {
userAgent = html.window.navigator.userAgent;
} else {
try {
await FkUserAgent.init();
userAgent = FkUserAgent.webViewUserAgent;
} catch (_) {
userAgent = 'Unknown';
}
}
// Screen Resolution
width = window.physicalSize.width.toInt();
height = window.physicalSize.height.toInt();
// Initialize Session Information
var firstVisit = DateTime.now().toUtc();
var lastVisit = DateTime.now().toUtc();
var visitCount = 1;
_prefs = await SharedPreferences.getInstance();
if (_prefs!.containsKey(kFirstVisit)) {
firstVisit = DateTime.fromMillisecondsSinceEpoch(_prefs!.getInt(kFirstVisit)!);
} else {
_prefs!.setInt(kFirstVisit, firstVisit.millisecondsSinceEpoch);
}
if (_prefs!.containsKey(kLastVisit)) {
lastVisit = DateTime.fromMillisecondsSinceEpoch(_prefs!.getInt(kLastVisit)!);
}
// Now is the last visit.
_prefs!.setInt(kLastVisit, lastVisit.millisecondsSinceEpoch);
if (_prefs!.containsKey(kVisitCount)) {
visitCount += _prefs!.getInt(kVisitCount)!;
}
_prefs!.setInt(kVisitCount, visitCount);
session = _Session(firstVisit: firstVisit, lastVisit: lastVisit, visitCount: visitCount);
// Initialize Visitor
if (visitorId == null) {
visitorId = Uuid().v4().toString();
if (_prefs!.containsKey(kVisitorId)) {
visitorId = _prefs!.getString(kVisitorId);
} else {
_prefs!.setString(kVisitorId, visitorId);
}
}
visitor = _Visitor(id: visitorId, forcedId: null, userId: visitorId);
if (contentBaseUrl != null) {
contentBase = contentBaseUrl;
} else if (kIsWeb) {
contentBase = html.window.location.href;
} else {
PackageInfo packageInfo = await PackageInfo.fromPlatform();
contentBase = 'https://${packageInfo.packageName}';
}
if (_prefs!.containsKey(kOptOut)) {
_optOut = _prefs!.getBool(kOptOut);
} else {
_prefs!.setBool(kOptOut, _optOut!);
}
log.fine(
'Matomo Initialized: firstVisit=$firstVisit; lastVisit=$lastVisit; visitCount=$visitCount; visitorId=$visitorId; contentBase=$contentBase; resolution=${width}x$height; userAgent=$userAgent');
this.initialized = true;
_timer = Timer.periodic(Duration(seconds: dequeueInterval), (timer) {
this._dequeue();
});
}