initialize static method

Future<void> initialize({
  1. required SDKEnvironment environment,
  2. required String deviceId,
  3. String? baseURL,
  4. String? accessToken,
})

Initialize telemetry manager with device info (full async init)

Implementation

static Future<void> initialize({
  required SDKEnvironment environment,
  required String deviceId,
  String? baseURL,
  String? accessToken,
}) async {
  if (_isInitialized) {
    _logger.debug('Telemetry already initialized');
    return;
  }

  _environment = environment;
  _baseURL = baseURL;
  _accessToken = accessToken;

  try {
    final lib = PlatformLoader.loadCommons();

    // Get device info
    final deviceModel = await _getDeviceModel();
    final osVersion = Platform.operatingSystemVersion;
    const sdkVersion = '0.1.4';
    const platform = 'flutter';

    // Create telemetry manager
    final createManager = lib.lookupFunction<
        Pointer<Void> Function(
            Int32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>),
        Pointer<Void> Function(int, Pointer<Utf8>, Pointer<Utf8>,
            Pointer<Utf8>)>('rac_telemetry_manager_create');

    final envValue = _environmentToInt(environment);
    final deviceIdPtr = deviceId.toNativeUtf8();
    final platformPtr = platform.toNativeUtf8();
    final sdkVersionPtr = sdkVersion.toNativeUtf8();

    try {
      _managerPtr =
          createManager(envValue, deviceIdPtr, platformPtr, sdkVersionPtr);

      if (_managerPtr == nullptr ||
          _managerPtr == Pointer<Void>.fromAddress(0)) {
        _logger.warning('Failed to create telemetry manager');
        return;
      }

      // Set device info
      final setDeviceInfo = lib.lookupFunction<
          Void Function(Pointer<Void>, Pointer<Utf8>, Pointer<Utf8>),
          void Function(Pointer<Void>, Pointer<Utf8>,
              Pointer<Utf8>)>('rac_telemetry_manager_set_device_info');

      final deviceModelPtr = deviceModel.toNativeUtf8();
      final osVersionPtr = osVersion.toNativeUtf8();

      setDeviceInfo(_managerPtr!, deviceModelPtr, osVersionPtr);

      calloc.free(deviceModelPtr);
      calloc.free(osVersionPtr);

      // Register HTTP callback
      _registerHttpCallback();

      _isInitialized = true;
      _logger.debug('Telemetry manager initialized');
    } finally {
      calloc.free(deviceIdPtr);
      calloc.free(platformPtr);
      calloc.free(sdkVersionPtr);
    }
  } catch (e, stack) {
    _logger.debug('Telemetry initialization error: $e', metadata: {
      'stack': stack.toString(),
    });
    _isInitialized = true; // Avoid retry loops
  }
}