trackPageView static method

Future<void> trackPageView({
  1. required String pageUrl,
  2. required String pageTitle,
  3. String? cartId,
  4. String? productId,
  5. String? collectionId,
  6. Map<String, dynamic>? customProperties,
})

Implementation

static Future<void> trackPageView({
  required String pageUrl,
  required String pageTitle,
  String? cartId,
  String? productId,
  String? collectionId,
  Map<String, dynamic>? customProperties,
}) async {
  if (!await _isTrackingEnabled()) return;


  final payload = await _createBasePayload('pv');
  payload['url'] = pageUrl;
  payload['page'] = pageTitle;

  if (!_validatePayload(payload)) {
    return;
  }

  final contexts = await _buildContexts(
    cartId: cartId,
    productId: productId,
    collectionId: collectionId,
    customProperties: customProperties,
  );

  if (contexts.isNotEmpty) {
    payload['cx'] = base64Encode(utf8.encode(jsonEncode({
      'schema': 'iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0',
      'data': contexts,
    })));
  }

  // print payload in json string after cx property is added
  _printLargeJson('PAYLOAD JSON ', jsonEncode(payload));

  await _sendEvent(payload, 'pageview');
}