initialize method

dynamic initialize({
  1. required int siteId,
  2. required String url,
  3. String? visitorId,
  4. String? contentBaseUrl,
  5. int dequeueInterval = 10,
  6. String? tokenAuth,
})

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();
  });
}